6中方式实现数组扁平化
概念:将一个多维数组变为一维数组
[1, [2, 3, [4, 5]]] 转变 [1, 2, 3, 4, 5]
1.flat
[1, [2, [3]]].flat(2) // [1, 2, 3]
[1, [2, [3,[4,5,6]]]].flat(3) // [1, 2, 3, 4, 5, 6]
2.利用some+concat
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
flatten([1,2,[3,4,[5,6,7]]])//[1, 2, 3, 4, 5, 6, 7]
3.递归
function flatten(arr) {
var result = [];
arr.map(item=>{
if (Array.isArray(item)) {
result = result.concat(flatten(arr[i]))
} else {
result.push(arr[i])
}
})
return result;
}
flatten([1,2,[3,4,[5,6,7]]]) //[1, 2, 3, 4, 5, 6, 7]
4.reduce
function flatten(arr) {
return arr.reduce((result, item)=> {
return result.concat(Array.isArray(item) ? flatten(item) : item);
}, []);
}
flatten([1,2,[3,4,[5,6,7]]]) //[1, 2, 3, 4, 5, 6, 7]
5.toString+split
function flatten(arr) {
return arr.toString().split(',').map(function(item) {
return item;//根据需要进行处理
})
}
flatten([1,2,[3,4,[5,'红色']]])//['1', '2', '3', '4', '5', '小红']
6.join +split
function flatten(arr) {
return arr.join(',').split(',').map(function(item) {
return item;//根据需要进行处理
})
}
flatten([1,2,[3,4,[5,'红色']]])//['1', '2', '3', '4', '5', '小红']