一、数组扁平化
将多维数组转化为一维数组
二、实现方法
1、通过es6 数组flat 方法
let Arr = [1,[2, [3, 4]]]
// 默认扁平化一层,且不改变原数组
console.log(Arr.flat())
// 参数默认1,标示扁平化处理一层, Infinity全部扁平化处理
console.log(Arr.flat(Infinity))
2、通过循环递归赋值
let myFlat = function(arr){
let newArr = [];
doFlat(arr)
let doFlat = function(){
for(let k = 0; k < arr.length; k++){
if(Array.isArray(arr[k])){
doFlat(arr[k])
}else{
newArr.push(arr[k])
}
}
}
return newArr
}
console.log(myFlat(Arr), '+++++myFlat')
3、通过数组reduce、concat实现
// 通过数组reduce
function iterTree3(arr) {
var newArr = arr.reduce((prev, current) => {
return prev.concat(Array.isArray(current) ? iterTree3(current) : current)
}, []);
return newArr;
}
console.log(iterTree3(Arr));
4、通过数组some、 while语句实现
// 通过some while语句实现
function iterTree2(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(iterTree2(arr1));
5、通过字符串替换实现
let ary = [1, [2, [3, [4, 5]]], 6];
let str = JSON.stringify(ary);
str = str.replace(/(\[\]))/g, '');
str = '[' + str + ']';
ary = JSON.parse(str);