美文网首页
JS中四种实现数组拍平(扁平化)的常用方法

JS中四种实现数组拍平(扁平化)的常用方法

作者: 硅谷干货 | 来源:发表于2024-03-08 17:50 被阅读0次

    什么叫数组拍平?

    概念很简单,意思是将一个“多维”数组降维,比如:

    // 原数组是一个“三维”数组
    const array = [1, 2, [3, 4, [5, 6], 7], 8, 9]
    
    // 可以降成二维
    newArray1 = [1, 2, 3, 4, [5, 6], 7, 8, 9]
    
    // 也可以降成一维
    newArray2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    数组拍平也称数组扁平化、数组降维,以下四种方式是我总结的常用方法,同学们直接拷贝可用。

    while遍历

    const arr1 = [1, 2, 3, [4, 5, [7, 8]]];
    const flatten = function (arr) {
      while (arr.some((v) => Array.isArray(v))) {
        arr = [].concat(...arr);
      }
      return arr;
    };
    console.log(flatten(arr1));
    
    

    map遍历

    const arr2 = [1, 2, 3, [4, 5, [7, 8]]];
    const flatten2 = function (arr) {
      return [].concat(
        ...arr.map((v) => (Array.isArray(v) ? flatten2(v) : v))
      );
    };
    console.log(flatten2(arr2));
    

    reduce遍历

    const arr3 = [-1, [0, 1], [2, 3], [4, [5, 6, 7]]];
    function flatten3(arr) {
      return arr.reduce(
        (pre, cur) => pre.concat(Array.isArray(cur) ? flatArr3(cur) : cur),
        []
      );
    }
    console.log(flatten3(arr2));
    

    reduce遍历

    const arr4 = [-1, [0, 1], [2, 3], [4, [5, 6, 7]]];
    const flatArr = arr4.flat(Infinity);
    console.log(flatArr);
    

    同学们验证之后感觉怎么样,都是一句代码搞定,便捷而高效,如果您有更牛掰的方式,也欢迎留言补充。

    相关文章

      网友评论

          本文标题:JS中四种实现数组拍平(扁平化)的常用方法

          本文链接:https://www.haomeiwen.com/subject/hpqyzdtx.html