javascript 对象上的映射 - 获取对象键

ale*_*lex 3 javascript javascript-objects ecmascript-6

我需要映射这样的对象

let obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    a : { value : 6, meta: "nnn" },
}`
Run Code Online (Sandbox Code Playgroud)

像这样获得并反对

{ a: 5, b: 1, c:6}
Run Code Online (Sandbox Code Playgroud)

我无法获取字符串形式的“密钥”。

我试过了:

let yyy = Object.keys(obj).map(function (key) {
    return { key: obj[key].value };
});
Run Code Online (Sandbox Code Playgroud)

但它会生成一个“数组”(虽然我需要一个对象),其中包含{key : 5}... 字符串“key”而不是键的名称。

Rah*_*edi 8

你可以使用.reduce

let obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    c : { value : 6, meta: "nnn" },
}

var res = Object.keys(obj).reduce((acc, elem)=>{
  acc[elem] = obj[elem].value;
  return acc;
},{});

console.log(res)
Run Code Online (Sandbox Code Playgroud)


Nin*_*olz 6

您可以获取条目并映射value新对象的键和属性。

let object = { a : { value: 5, meta: "sss" }, b : { value: 1, meta: "rrr" }, c : { value: 6, meta: "nnn" } },
    result = Object.fromEntries(Object
        .entries(object)
        .map(([key, { value }]) => [key, value])
    );

console.log(result);
Run Code Online (Sandbox Code Playgroud)