我正在尝试展平数组对象数组。例如,我们可能有这样的东西:
[{ 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/