[英]How to map JSON Object to array with keys in javascript
关于这个主题有大约数百万个问题(和答案),但没有一个在做我需要做的事情。 我有一个 JSON 对象,其中每个键的值都是一个对象。 我想将其转换为数组并维护顶级键。
{
"someKey1": {
active: true,
name: "foo"
},
"someKey2": {
active: false,
name: "bar"
}
}
如果我使用 Object.keys() 我得到顶级键,但不是它们的值。 如果我使用 Object.values() 我会得到一个包含所有值的数组,但不是它们的键。 我正在尝试使用键和映射,但只得到返回的值:
const data = {
"someKey1": {
active: true,
name: "foo"
},
"someKey2": {
active: false,
name: "bar"
}
}
const items = Object.keys(data).map(function(key) {
return data[key];
});
// returns [{active: true, name: foo},{active: false, name: bar}]
有没有办法两者兼得? 我想得到一个可以迭代的数组,看起来像这样:
[{
key: someKey1,
active: true,
name: "foo"
},
{
key: someKey2,
active: true,
name: "foo"
}]
OR
[
"someKey1": {
active: true,
name: "foo"
},
"someKey2": {
active: false,
name: "bar"
}
]
我认为你的方向是正确的,如果你想添加“key”属性,你必须手动映射属性,对于第二个选项,因为你不需要“key”属性,它可以做一点更优雅:
对于第一个选项:
Object.keys(data).map(v => ({
key: v,
...data[v]
}));
对于第二个选项更简单:
Object.keys(data).map(v => ({[v]: {...data[v]}}))
您可以轻松地将数据映射到新对象:
Object.keys(data).map(key => ({ ...data[key], "key": key }));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.