平面地图
您想要做的就是所谓的平面映射。构建flatMap 功能的方法是将reduce 与扩展运算符或Array.concat 结合使用,如下所示:
减少 + 扩展/连接
ES2015
const myArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const finishedArray = myArray
.reduce((combinedArr, currentArr) => ([...combinedArr, ...currentArr]), []);
console.log(finishedArray); // Prints: [1, 2, 3, 4, 5, 6, 7, 8, 9]
ES5
var myArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
var finishedArray = myArray
.reduce(function (combinedArr, currentArr) {
return combinedArr.concat(currentArr);
}, []);
console.log(finishedArray); // Prints: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Array.flat
var myArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
var finishedArray = myArray.flat();
console.log(finishedArray); // Prints: [1, 2, 3, 4, 5, 6, 7, 8, 9]
修正您的解决方案
您的代码也应该可以修复轻微的错误。代码中的问题是您尝试将条目推送到finishedarray[i] - 但您有一个空数组和访问位置i,它返回undefined。直接push到数组即可:
for-循环
for (var i = 0; i < myArray.length; i++) {
for (var j = 0; j < myArray[i].length; j++) {
finishedarray.push(myArray[i][j]); // removed the "[i]" part in front of ".push"
}
}
for...of 循环
for (var arr of myArray) {
for (var entry of arr) {
finishedarray.push(entry);
}
}
编辑:添加了 Array.flat。感谢您对此的评论!