js 基础——数组扁平化

382 阅读1分钟

一、数组扁平化

将多维数组转化为一维数组

二、实现方法

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);