zoukankan      html  css  js  c++  java
  • js数组扁平化的几种方式

    1、概念

    数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。例如将 [1, [2, [3, 4]]] 转化为 [1,2,3,4]

    2、方法

    (1)使用 flat()

    let arr =  [1, [2, [3, 4]]] 
    const res1 = arr.flat(Infinity)

    (2)使用正则

    const res2 = JSON.parse('[' + JSON.stringify(arr).replace(/[|]/g, '') + ']')

    (3)使用递归

     let arr = [1, [2, [3, 4]]]; 
     function flattern(arr) {
            let result = [];
            for(let i = 0; i < arr.length; i++) {
                if(Array.isArray(arr[i])) {
                    flattern(arr[i])
                } else {
                    result.push(arr[i])
                }
            }
            return result;
        }
    console.log(flattern(arr));

    (4)使用 reduce

    function flatten(ary) {
        return ary.reduce((pre, cur) => {
            return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
        }, []);
    }
    let ary = [1, 2, [3, 4], [5, [6, 7]]]
    console.log(flatten(ary))

    关于reduce方法详细介绍参考 https://www.cnblogs.com/amujoe/p/11376940.html

    (5)使用扩展运算符

      es6的扩展运算符能将二维数组变为一维: [].concat(...[1, 2, 3, [4, 5]]); // [1, 2, 3, 4, 5]

      根据这个结果我们可以做一个遍历,若arr中含有数组则使用一次扩展运算符,直至没有为止。

    function flatten(arr) {
        while(arr.some(item => Array.isArray(item))) {
            arr = [].concat(...arr);
        }
        return arr;
    }
  • 相关阅读:
    《算法竞赛进阶指南》0x42树状数组 楼兰图腾
    《算法竞赛进阶指南》0x41并查集 奇偶游戏
    .NET技术-常规操作
    TFS-在windows上配置自动化部署
    * 常用软件下载
    Docker 修改网桥网段
    Docker
    Docker
    NETCORE
    .NET框架
  • 原文地址:https://www.cnblogs.com/BAHG/p/15188769.html
Copyright © 2011-2022 走看看