• Js多维数组拆分为一维数组(数组扁平化)


    1.使用reduce

    const flatten = arr => {
      return arr.reduce((pre, cur) => {
        return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
      }, [])
    }
    const res = flatten(arr);

    2.利用ES6---map()

    var arr1 = [[0, 1], [2, 3], [4, 5]];
    function flatten(arr) { return [].concat( ...arr.map(x => Array.isArray(x) ? flatten(x) : x) ) }
    var arr2 = flatten(arr1); // arr2 [0, 1, 2, 3, 4, 5]
    
    优点: 多维数组也可以
    比如:var arr = [[1,2],3,[[[4], 5]]]
    

    3.使用flat()

    const res = arr.flat(Infinity);

    4.函数递归

    const res = [];
    const fn = arr => {
      for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) {
          fn(arr[i]);
        } else {
          res.push(arr[i]);
        }
      }
    }
    fn(arr);

    5.利用正则

    //1.基本正则
    const res = JSON.stringify(arr).replace(/[|]/g, '').split(',');
    //但数据类型都会变为字符串
    
    //2.改良正则
    const res= JSON.parse('[' + JSON.stringify(arr).replace(/[|]/g, '') + ']');

    6.利用apply实现(二维转一维)

    var arr1 = [[0, 1], [2, 3], [4, 5]];
    var arr2 = [].concat.apply([], arr1);
    // arr2 [0, 1, 2, 3, 4, 5]
    

    7.通过将数组转变成字符串,利用str.split(',')实现。缺点是数组元素都变字符串了(二维转一维)

    var arr1 = [[0, 1], [2, 3], [4, 5]];
    
    var arr2 = (arr1 + '').split(',');
    
    var arr2 = arr.toString().split(',');
    
    var arr2 = arr.join().split(',');
    
    // arr2 ["0", "1", "2", "3", "4", "5"]
  • 相关阅读:
    爬虫解析库:XPath
    手写一个小型打包构建工具
    Python网络爬虫神器PyQuery的使用方法
    人脸识别JavaScript也可以轻松搞定
    颜值即正义!这几个库颠覆你对数据交互的想象
    微信朋友圈自动点赞
    android studio的安装信息
    Docker使用笔记
    C语言联合
    Mac之Sublime Text使用Go
  • 原文地址:https://www.cnblogs.com/yxkNotes/p/11981097.html
Copyright © 2020-2023  润新知