数组扁平的常见方法

1.toString + split,可以处理多维数组,但不能包含特殊的子元素如null,undefined,对象等
  console.log(arr1.toString());
  console.log(arr1.toString().split(","));
  const newarr2 = arr1.toString().split(",").map(item=>{
  return +item
  })
  console.log(newarr2);
 
2.concat+扩展运算符,缺点只能展开二维数组
  console.log(...arr1);//把数组元素展开成独立的元素
  console.log([].concat(...arr1));
 
3.reduce + concat, 只能展开二维数组
  1.定义和用法
  2.reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
  3.reduce() 可以作为一个高阶函数,用于函数的 compose。
    注意: reduce() 对于空数组是不会执行回调函数的。
  4.语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    参数:
      total 必需。初始值, 或者计算结束后的返回值。
      currentValue 必需。当前元素
      currentIndex 可选。当前元素的索引
      arr 可选。当前元素所属的数组对象。
      initialValue 可选。传递给函数的初始值
    eg:
    const arr2 = [1,2,3,4,5];
    const sum = arr2.reduce((pre,item,index,arr)=>{
    console.log(pre,item,index,arr);
    return pre + item;
    },0)
    console.log(sum);
 
  const newarr1 = arr1.reduce((pre,item) => {
  return pre.concat(item)
  },[])
  console.log(newarr1);
 
4.flat方法
  1.概念:flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
  2.语法:arr.flat(depth),depth指定要提取嵌套数组的结构深度默认值为1,infinity可以展开任意深度的嵌套数组
  3.返回值:一个包含将数组与子数组中所有元素的新数组。
  const arr1 = [1,2,3,[1,2,3]];
  console.log(arr1.flat());
 
posted @ 2022-03-04 06:59  前端lu  阅读(47)  评论(0)    收藏  举报