我需要映射一个这样的对象
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 "代替键的名称。
试试下面这个。
在你的输入上使用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}
你可以获得条目,并将键和属性映射到对象上。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);
您可以使用 .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)
试试用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)
你可以用 reduce
功能来实现你的结果。
let result = Object.keys(obj).reduce((acc,k) => {
return {
...acc,
[k]:obj[k].value
};
},{})
console.log(result); // {"a":5,"b":1,"c":6}
希望对你有所帮助。
使用 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);