我有一个带有几个键的javascript对象,其值是对象数组。我试图将所有键/值组合成一个对象数组。所以来自
{
a: [{}, {}, {}],
b: [{}, {}, {}],
c: [{}, {}, {}]
}
到
[{}, {}, {}, {}, {}, ...]
我正在尝试像
这样的东西Object.keys(myObject).map(key => myObject[key])
这会产生一个包含3个数组的数组。
我也尝试过使用lodash并执行
Object.keys(myObject).map(key => _.values(myObject[key]))
这似乎导致了同样的事情。我该怎么做呢?最好是像我一样尝试而不是循环。对不起,如果已经提出这个问题,我不知道该怎么说出问题来找到结果
答案 0 :(得分:3)
您可以concat
对象的值。
var object = { a: [{}, {}, {}], b: [{}, {}, {}], c: [{}, {}, {}] },
array = [].concat(...Object.values(object));
console.log(array);
答案 1 :(得分:1)
你可以使用Array.prototype.reduce
生成一个包含所有嵌套对象的数组(这里只处理一层嵌套,我不知道你想要多少)。
var values = {
a: [{}, {}, {}],
b: [{}, {}, {}],
c: [{}, {}, {}]
};
Object.keys(values).reduce(function(res, key) {
return res.concat(values[key]);
}, []); // [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
答案 2 :(得分:1)
在ES6中,如果已知密钥,您只需执行以下操作:
const array = [...obj.a, ...obj.b, ...obj.c];
答案 3 :(得分:0)
您可以在JavaScript中连接数组。以下是您问题的解决方案:
var data = {
a: [{}, {}, {}],
b: [{}, {}, {}],
c: [{}, {}, {}]
}
var result = [];
for (var key in data ){
result = result.concat(data [key]);
}
console.log(result);