从 Promise.all 合并许多数组

新手上路,请多包涵

Promise.all 完成时,它返回一个包含数据的数组。在我的例子中,数组只是数字:

 [
    [ 1, 4, 9, 9 ],
    [ 4, 4, 9, 1 ],
    [ 6, 6, 9, 1 ]
]

该数组可以是任意大小。

目前我正在这样做:

 let nums = []
data.map(function(_nums) {
    _nums.map(function(num) {
        nums.push(num)
    })
})

有没有其他方法可以做到这一点? lodash 是否有任何功能可以做到这一点?

原文由 BugHunterUK 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 639
2 个回答

ES2019 引入了 Array.prototype.flat 这大大简化了这个:

 const nums = data.flat();

 const data = [
  [ 1, 4, 9, 9 ],
  [ 4, 4, 9, 1 ],
  [ 6, 6, 9, 1 ]
];

const nums = data.flat();

console.log(nums);

原始答案

使用 reduceconcat

 data.reduce(function (arr, row) {
  return arr.concat(row);
}, []);

或者, concatapply

 Array.prototype.concat.apply([], data);

原文由 zzzzBov 发布,翻译遵循 CC BY-SA 4.0 许可协议

我会做如下;

 var a = [
    [ 1, 4, 9, 9 ],
    [ 4, 4, 9, 1 ],
    [ 6, 6, 9, 1 ]
],
    b = [].concat(...a)

console.log(b)

原文由 Redu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题