【✨🪐💗魔仙带你掌握数组扁平化的6种方法】

85 阅读1分钟

拿下数组扁平化 走遍天下都不怕

案例 var a = [1, [2, [3, 4, 5]]];
1 循环递归
function flatten(arr){
  let result = []
  for(let i=0;i<arr.length;i++){
     if(Array.isArray(arr[i])){
       result = result.concat(flatten(arr[i]))
     }else{
       result.push(arr[i])
     }
  }
  return result
}

2.reduce
function flatten(arr){
  return arr.reduce((prev,cur) => {return prev.concat(Array.isArray(cur)?flatten(cur):cur)},[])
}

3.扩展运算符和some
function flatten(arr){
   while(arr.some(item => {Array.isArray(item)}){
       arr = [].concat(...arr)
   }
   return arr
}

4. toString/split
function flatten(arr){
   return arr.toString().split(',')
}
5.ES6 flat
arr.flat(Infinity)

6.正则
function flatten(arr){
   let str = JSON.stringify(arr)
   str = str.replace('/(\[|\])/g','');
   str = '['+str+']';
   return JSON.parse(str)
}