在javascript对象上进行映射 - 获取对象的键值

问题描述 投票:-1回答:2

我需要映射一个这样的对象

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

以获得和这样的对象

{ a: 5, b: 1, c:6}

我不能把 "钥匙 "作为一个字符串。

我试过了,但它产生的是一个 "数组"(而我需要的是一个对象)。

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

但它产生了一个 "数组"(而我需要一个对象)... ... {key : 5}... 用字符串 "key "代替键的名称。

javascript ecmascript-6 javascript-objects
2个回答
1
投票

试试下面这个。

在你的输入上使用Object.keys。

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

let output = {};
Object.keys(obj).map(function (item) {
    output[item] = obj[item]['value']
});
console.log(output)


Output : { a: 5, b: 1, c:6}

1
投票

你可以获得条目,并将键和属性映射到对象上。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);

0
投票

您可以使用 .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)

0
投票

试试用reduce代替map...

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


const res = Object.keys(obj).reduce( (res, key) => {
  res[key] = obj[key].value
  return res;
}, {});

console.log(res)

0
投票

你可以用 reduce 功能来实现你的结果。

let result = Object.keys(obj).reduce((acc,k) => {
    return {
        ...acc,
        [k]:obj[k].value
    };
},{})
console.log(result); // {"a":5,"b":1,"c":6}

希望对你有所帮助。


0
投票

使用 for..of 循环和解构值

let obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    c : { value : 6, meta: "nnn" },
}
const data = Object.entries(obj);
let result={};
for(let [key, {value}] of data) {
  result[key] = value;
}
console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.