如何将对象键/值组合成单个数组?

wiz*_*loc 6 javascript arrays

我有一个带有几个键的javascript对象,其值是对象数组.我试图将所有键/值组合成一个对象数组.所以来自

{
    a: [{}, {}, {}],
    b: [{}, {}, {}],
    c: [{}, {}, {}]
}
Run Code Online (Sandbox Code Playgroud)

[{}, {}, {}, {}, {}, ...]
Run Code Online (Sandbox Code Playgroud)

我正在尝试类似的东西

Object.keys(myObject).map(key => myObject[key])
Run Code Online (Sandbox Code Playgroud)

这导致一个内部有3个数组的数组.

我也尝试过使用lodash和做

Object.keys(myObject).map(key => _.values(myObject[key]))
Run Code Online (Sandbox Code Playgroud)

这似乎导致了同样的事情.我该怎么做呢?最好是像我一样尝试而不是循环.很抱歉,如果已经提出这个问题,我不知道该如何说出问题以找到结果

kLa*_*abz 2

您可以使用它Array.prototype.reduce来生成一个包含所有嵌套对象的数组(这里只处理一层嵌套,我不知道您想要多少)。

\n\n
var values = {\n    a: [{}, {}, {}],\n    b: [{}, {}, {}],\n    c: [{}, {}, {}]\n};\n\nObject.keys(values).reduce(function(res, key) {\n    return res.concat(values[key]);\n}, []); // [{\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}]\n
Run Code Online (Sandbox Code Playgroud)\n

  • 通过使用箭头函数和 `concat` 来节省一些输入(在reduce内部),例如:`reduce( (current, item) => current.concat(values[item] ) )` (2认同)