目录
5.lodash方法:_.flattenDeep(array)
1.递归
核心思路:循环遍历每一个数组元素 不是数组得数组元素先添加新数组中
是数组得数组元素循环遍历 flat(数组元素)
扁平化数组 数组排序 冒泡排序 插入排序 快速排序
var arr = [1,2,[3,4,5,[6,7,8,[9,10,[11,12]]]]];//[1,2,3,4,5,6,7,8,9,10]
function flat(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
newArr = newArr.concat(flat(arr[i]))
}else{
newArr.push(arr[i])
}
}
return newArr;
}
console.log(flat(arr));
2.API
var arr = [1,2,[3,4,5,[6,7,8,[9,10,[11,12]]]]];//[1,2,3,4,5,6,7,8,9,10]
function flat(arr){
// console.log(arr.toString().split(","));
// var res = arr.toString().split(",");//["1","2","3","4"]
// return res.map(function(item){
// return Number(item)
// });
return arr.toString().split(",").map(function(item){
return +item
})
}
console.log(flat(arr));
运行结果
[
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12
]
3.some方法
var arr = [1,2,[3,4,5,[6,7,8,[9,10,[11,12]]]]];//[1,2,3,4,5,6,7,8,9,10]
function flat(arr){
while(arr.some(function(item){
return Array.isArray(item)
})){
console.log(arr,'上一次结果');
arr = [].concat(...arr);//[1,2,[3,4,5,[6,7,8,[9,10]]]] // [1,2,3,4,5,[6,7,8,[9,10]]]
}
return arr
}
console.log(flat(arr));
var arr = [1,2,3,4,5];
// 拓展运算符 左侧展开
console.log(...arr);
运行结果:
[ 1, 2, [ 3, 4, 5, [ 6, 7, 8, [Array] ] ] ] 上一次结果
[ 1, 2, 3, 4, 5, [ 6, 7, 8, [ 9, 10, [Array] ] ] ] 上一次结果
[ 1, 2, 3, 4, 5, 6, 7, 8, [ 9, 10, [ 11, 12 ] ] ] 上一次结果
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [ 11, 12 ] ] 上一次结果
[
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12
]
1 2 3 4 5
4.flat方法
var arr = [1,2,3,[4,5,6,[7,8,9,[10,11]]]];
console.log(arr.flat(Infinity));
5.lodash方法:_.flattenDeep(array)
//引入lodash库
var _ = require('lodash');
_.flattenDeep([1,[2,[3,[4]],5]]);