blog
blog copied to clipboard
javascript多维数组扁平化
下面是将多位数组转化为单一数组的三种不同方法: 对于此数组:
var myArray = [[1, 2],[3, 4, 5], [6, 7, 8, 9]];
我们需要的结果是:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
- 解决方案1: 使用
concat()和apply()
var myNewArray = [].concat.apply([], myArray)
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 解决方案2:使用
reduce()
var myNewArray = myArray.reduce(function (prev, curr) {
return prev.concat(curr)
})
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 解决方案3: for循环
var myNewArray3 = [];
for (var i = 0; i < myArray.length; ++i) {
for (var j = 0; j < myArray[i].length; ++j)
myNewArray3.push(myArray[i][j]);
}
console.log(myNewArray3);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 解决方案4: 使用es6的展开运算符
var myNewArray4 = [].concat(...myArray)
console.log(myNewArray4)
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 解决方案5: 使用es6自带的flat
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// 使用 Infinity 作为深度,展开任意深度的嵌套数组
arr3.flat(Infinity);
对于无限嵌套的数组请使用 Lodash 的 flattenDeep()。