资讯专栏INFORMATION COLUMN

数组扁平化(将多维数组降维成一维数组)

Ethan815 / 1923人阅读

摘要:将这个问题进行转化将维数组降到维思路构造一个目标数组,初始为空。如果当前项是数组,对当前数组元素进行降维。这是一个典型的递归过程。

将这个问题进行转化 ===> 将N维数组降到(N-1)维

思路:构造一个目标数组,初始为空。遍历N维数组中的每一项。
如果当前项不是数组而是单个元素,那么将它保存到目标数组中。
如果当前项是数组,对当前数组元素进行降维。
这是一个典型的递归过程。

function flattenArray(list, target) {
  const len = list.length;
  for(let i = 0; i < len; i++) {
    if (list[i] instanceof Array) {
      flattenArray(list[i], target);
    } else {
      target && target.push(list[i]);
    }
  }
}

let target = new Array();
const list = [1, [3, [4, [6, 7]], 5], 2];
flattenArray(list, target);
console.log("list ", target);

结果是:list [ 1, 3, 4, 6, 7, 5, 2 ]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106674.html

相关文章

  • SKLearn分类树在合成数集上的表现

    小伙伴们大家好~o( ̄▽ ̄)ブ,我是菜菜,这里是我的sklearn课堂 我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版本至少要0.20 Graphviz 0.8.4 (没有画不出决策树哦,安装代码conda install python-graphviz Numpy 1.15.3,...

    Seay 评论0 收藏0
  • 一道简单的多维数组取值问题

    摘要:问题简述给予一个多维数组和一个描述取值路径的一维数组通过调用函数返回取值路径描述的值,如原问题传送门之所以想记录一下是因为之前有在刷题的习惯,后来工作忙就怠慢了,今天闲来无事就准备刷几道玩玩,然后就挑了一个比较简单的中的难度评级的题。 问题简述 给予一个多维数组和一个描述取值路径的一维数组, 通过调用函数f返回取值路径描述的值,如f([[1, 2], [3, 4], [5, 6]], ...

    tracymac7 评论0 收藏0
  • 1625行,解开 underscore.js 的面纱 - 第五章

    摘要:对多个一维数组进行并运算,实际上就是加强版的。所以我要说的是这个函数,将传入参数转换为一个数组进行到的回调函数中,以此达到函数接到的是一个一维数组的集合。 每次小章节的开题都烦恼写什么好,所以直接接下文 (~o▔▽▔)~o o~(▔▽▔o~) 。 _.first = _.head = _.take = function(array, n, guard) { if (arra...

    Rango 评论0 收藏0
  • 学习笔记: JS数组

    摘要:数组元素甚至可以是对象或其它数组。它执行的是浅拷贝,这意味着如果数组元素是对象,两个数组都指向相同的对象,对新数组中的对象修改,会在旧的数组的相同对象中反应出来。 JS中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其它数组。JS引擎一般会优化数组,按索引访问数组常常比访问一般对象属性明显迅速。数组长度范围 from 0 to 4,294,967,295(2^...

    archieyang 评论0 收藏0
  • [转]php去除数组中重复数据

    摘要:转自实例脚本之家给数组排重与函数的区别它要求是字符串,而这个可以是数组对象要排重的数组是否保留原来的代码很简单,却非常的实用,有需要的小伙伴可以直接拿去用的。 转自 _php实例_脚本之家 /** * 给数组排重 * 与array_unique函数的区别:它要求val是字符串,而这个可以是数组/对象 * * @pa...

    shery 评论0 收藏0

发表评论

0条评论

Ethan815

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<