js里常见的数组扁平化

第一种方法:递归。
var arr = [1,[2,[3,4]]];

function myfc(aa){
  var lastArr = [];
  for(var i = 0;i<aa.length;i++){
    if(Array.isArray(aa[i])){
      lastArr.concat(myfc(aa[i]));
    } else {
      lastArr.push(aa[i]);
    }
  }
  return lastArr;
}
console.log(myfc(arr));

var arr = [1, [2, [3, 4]]];

function flatten(arr) {
  var result = [];
  for (var i = 0, len = arr.length; i < len; i++) {
    if (Array.isArray(arr[i])) {
      result = result.concat(flatten(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

console.log(flatten(arr));
 

 第二种方法:reduce.   

reduce(
    (prev,cur)=>{
        
},[])一个回调函数,一个初始值。  初始值给值,prev就有值,没给prev就是数组索引为0的元素

注意: reduce() 对于空数组是不会执行回调函数的。

var thisArr = [1, [2, [3, 4]]];

function myReduce(arr){
  return arr.reduce((prev,cur)=>{
    return prev.concat(Array.isArray(cur) ? myReduce(cur) : cur);
  },[])
}
console.log(myReduce(thisArr))


 

第三种方法flat(depth)

es6提供了一个新方法 flat(depth),参数depth,代表展开嵌套数组的深度,默认是1

let arr = [1, [2, 3, [4, [5]]]];
arr.flat(3); // [1,2,3,4,5]

 

posted @ 2023-05-11 14:26  富言杰  阅读(58)  评论(0编辑  收藏  举报