zoukankan      html  css  js  c++  java
  • 数组拍平

    005: JS中flat---数组扁平化

    对于前端项目开发过程中,偶尔会出现层叠数据结构的数组,我们需要将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组),使其内容合并且展开。那么该如何去实现呢?

    需求:多维数组=>一维数组

    let ary = [1, [2, [3, [4, 5]]], 6];// -> [1, 2, 3, 4, 5, 6]
    let str = JSON.stringify(ary);
    

    #1. 调用ES6中的flat方法

    ary = arr.flat(Infinity);
    

    #2. replace + split

    ary = str.replace(/([|])/g, '').split(',')
    

    #3. replace + JSON.parse

    str = str.replace(/([|]))/g, '');
    str = '[' + str + ']';
    ary = JSON.parse(str);
    

    #4. 普通递归

    let result = [];
    let fn = function(ary) {
      for(let i = 0; i < ary.length; i++) {
        let item = ary[i];
        if (Array.isArray(ary[i])){
          fn(item);
        } else {
          result.push(item);
        }
      }
    }
    

    #5. 利用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))
    

    #6:扩展运算符

    //只要有一个元素有数组,那么循环继续
    while (ary.some(Array.isArray())) {
      ary = [].concat(...ary);
    }
    

    这是一个比较实用而且很容易被问到的问题,欢迎大家交流补充。

  • 相关阅读:
    客户主数据批导
    update module (更新模块)
    关于SAP的编码范围
    MV45AOZZ 销售订单增强点
    BAPI list
    sap crm 常用表
    ME01 创建货源清单
    SAP采购寄售业务操作步骤
    让APK 成功在 Windows 运行并可以设置本地文件
    FastAdmin 学习线路 (2018-06-09 更新)
  • 原文地址:https://www.cnblogs.com/bamboopanders/p/13569768.html
Copyright © 2011-2022 走看看