方法一:使用递归进行数组扁平化 核心思路:循环遍历每一个数组元素 不是数组得数组元素先添加新数组中是数组得数组元素循环遍历 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));
方法二:使用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));
方法三 使用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);
方法四 使用flat方法进行数组扁平化处理
var arr = [1,2,3,[4,5,6,[7,8,9,[10,11]]]];
console.log(arr.flat(Infinity));