美文网首页
JS 二维数组多维数组拍平扁平化

JS 二维数组多维数组拍平扁平化

作者: 夹板儿孩 | 来源:发表于2020-09-15 23:50 被阅读0次

一个很简单的需求,开发过程中遇到的
例:

  let arr = [1, [2, 3, [4, 5], 6, [7, [8, [9, [10]]]]]];  //多维数组
  let arr2 = [[1,2,3],[4,5,6],[7,8],9]                    //二维数组
  //  需要得到的结果
  // arr = [1,2,3,4,5,6,7,8,9,10];
  // arr2 = [1,2,3,4,5,6,7,8,9];

实现方式其实有很多种,我只挑了一种学习,有兴趣的可以 点击这里

/**
 * 函数方式(递归)
 * @param arr 数组
 * @returns {*} 一维数组,全新的对象
 */
function fn(arr){
    return arr.reduce((prev,cur)=>{
        return prev.concat(Array.isArray(cur)?fn(cur):cur)
    },[])
}

// 给 Array 新增一个属性用于扁平化多维数组(递归)
Array.prototype.pia = function () {
    return this.reduce((prev, cur) => prev.concat(Array.isArray(cur) ? cur.pia() : cur),[]);
};

let arr = [1, [2, 3, [4, 5], 6, [7, [8, [9, [10]]]]]];
console.log("多维数组 函数调用fn(arr) --- " + fn(arr));    //使用函数方式扁平化多维数组
console.log("多维数组 属性调用arr.pia() --- " + arr.pia());  //使用属性扁平化多维数组

//如果只是像单纯的扁平化 二维数组 可以直接扁平就好了

let arr2 = [[1,2,3],[4,5,6],[7,8],9]
arr2 = arr2.reduce((prev, cur) => prev.concat(cur), []); //仅扁平化二维数组就不用递归了
console.log("二维数组 --- "+arr2);

相关文章

  • JS 二维数组多维数组拍平扁平化

    一个很简单的需求,开发过程中遇到的例: 实现方式其实有很多种,我只挑了一种学习,有兴趣的可以 点击这里

  • JavaScript数组_二维数组_三维数组(二十五)

    目录: 1.二维数组2.三维数组3.多维数组扁平化处理 一、二维数组 第一种方法:通过数组表达式来创建二维数组 第...

  • Java学习day-13:多维数组和冒泡排序

    一、多维数组: 多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组。 1.二维数组: (1)二维...

  • Array, Object扁平化

    1. 数组扁平化 数组扁平化就是将多维数组转化为一维数组: 1.1 toString + split 先将数组转化...

  • 5种方式实现数组扁平化

    5种方式实现数组扁平化 数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 实现 1. reduce 遍历数...

  • 数组扁平化

    数组扁平化的概念 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]] ------...

  • 多维数组

    创建多维数组 多维数组可以看成是数组的数组,二维数组是最基本的多维数组。 要创建多维数组,请将每个数组放在其自己的...

  • MATLAB多维数组

    8 多维数组 在实际应用的过程中,经常需要构造多于二维的数组,我们将多于二维的数组统称为多维数组。 对于二维数组,...

  • JavaScript之数组扁平化

    前言 所谓的数组扁平化指将多维度的数组转换为以为数组。 正文

  • 第2章 数组

    Array 添加删除 二维与多维数组 js数组方法参考 ES6 TypedArrays http://www.ht...

网友评论

      本文标题:JS 二维数组多维数组拍平扁平化

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