如何使用 javascript 中的键将 JSON 对象映射到数组
How to map JSON Object to array with keys in javascript
关于这个主题大约有数百万个问题(和答案),但其中 none 正在做我需要做的事情。我有一个 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"
}
]
我认为您的方向是正确的,如果您想添加“键”属性您必须手动映射属性,对于第二个选项,因为您不需要“键” " 属性 可以做得更优雅一点:
对于第一个选项:
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 }));
关于这个主题大约有数百万个问题(和答案),但其中 none 正在做我需要做的事情。我有一个 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"
}
]
我认为您的方向是正确的,如果您想添加“键”属性您必须手动映射属性,对于第二个选项,因为您不需要“键” " 属性 可以做得更优雅一点:
对于第一个选项:
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 }));