javascript - 展平数组对象的数组 JavaScript

标签 javascript arrays object

我正在尝试展平数组对象数组。例如,我们可能有这样的东西:

[{ numbers: [1, 2, 3] }, { numbers: [4, 5] }, { numbers: [6] }]

我想把它压平成:

[1, 2, 3, 4, 5, 6]

我有一个可行的解决方案来做这样的事情:

const arr = [{ numbers: [1, 2, 3] }, { numbers: [4, 5] }, { numbers: [6] }];
const almostFlattened = arr.map((obj) => obj.numbers);
const flattened = [].concat.apply([], almostFlattened);
console.log(flattened);

有没有人知道这里有更简单或更高效的解决方案,最好没有 almostFlattened 中间步骤?

最佳答案

您可以尝试 Array.reduce(),并通过将数字与累加器连接来展平数字的数组:

const arr = [{ numbers: [1, 2, 3] }, { numbers: [4, 5] }, { numbers: [6] }];

const result = arr.reduce((r, obj) => r.concat(obj.numbers), []);

console.log(result);

另一个选项是 Array.flatMap()(IE/Edge 不支持):

const arr = [{ numbers: [1, 2, 3] }, { numbers: [4, 5] }, { numbers: [6] }];

const result = arr.flatMap(obj => obj.numbers);

console.log(result);

关于javascript - 展平数组对象的数组 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49866369/

相关文章:

javascript - 尝试清理 lodash 中的对象键

javascript - 将数组中的字符串文字转换为变量名

javascript - 正则表达式在简短的副本中查找网址

javascript - 如何使用此 JSON 数据(如数组)

javascript - 函数或循环不工作

php - 如何在属于同一用户的数组中添加两个值?

Javascript 递归地遍历子级

javascript - Framework 7 Webpack 构建错误超过最大值 "500KB"

javascript - 在jsdom下执行时如何捕获脚本错误?

Java,使用点数组