zoukankan      html  css  js  c++  java
  • JS数组扁平化(flat)

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

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

    第0种处理:直接的调用

    arr_flat = arr.flat(Infinity);

    第一种处理

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

    第二种处理

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

    第三种处理:递归处理

    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);
    }
    }
    }

    第四种处理:用 reduce 实现数组的 flat 方法

    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(ary.MyFlat(Infinity))

    第五种处理:扩展运算符

    while (ary.some(Array.isArray)) {
    ary = [].concat(...ary);
    }
  • 相关阅读:
    性能分析
    单例模式
    装饰者模式
    开发Chrome Extension截取你微博的帐号密码
    201703-3 markdown
    201612-3 权限查询
    201609-3 炉石传说
    201604-2 俄罗斯方块
    201604-3 路径解析
    201512-1 数位之和
  • 原文地址:https://www.cnblogs.com/web-chuanfa/p/11681911.html
Copyright © 2011-2022 走看看