博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法图解|2】JavaScript 如何实现数组扁平化
阅读量:2046 次
发布时间:2019-04-28

本文共 657 字,大约阅读时间需要 2 分钟。

数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。

举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,

var arr = [1, [2, [3, 4]]];console.log(flatten(arr)) // [1, 2, 3, 4]

 我们最一开始能想到的莫过于循环数组元素,如果还是一个数组,就递归调用该方法:

// 这一种方法通过递归来实现,当元素为数组时递归调用,兼容性好function flattenArray(array) {  if (!Array.isArray(array)) return;  let result = [];  result = array.reduce(function (pre, item) {    // 判断元素是否为数组,如果为数组则递归调用,如果不是则加入结果数组中    return pre.concat(Array.isArray(item) ? flattenArray(item) : item);  }, []);  return result;}// 这一种方法是利用了 toString 方法,它的一个缺点是改变了元素的类型,只适合于数组中元素都是整数的情况function flattenArray(array) {  return array.toString().split(",").map(function (item) {    return +item;  })}

 

转载地址:http://eglof.baihongyu.com/

你可能感兴趣的文章
剑指offer 5.从尾到头打印链表
查看>>
剑指offer 6.用两个栈实现队列
查看>>
剑指offer 7.旋转数组的最小数字
查看>>
剑指offer 8-11.斐波那契数列 跳台阶 变态跳台阶 矩形覆盖
查看>>
剑指offer 12.二进制中1的个数
查看>>
剑指offer 13.数值的整数次方
查看>>
剑指offer 14.调整数组顺序使奇数位于偶数前面
查看>>
剑指offer 15.链表中倒数第k个节点
查看>>
剑指offer 16.反转链表
查看>>
剑指offer 17.合并两个排好序的链表
查看>>
剑指offer 18.树的子结构
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 26. 数组中出现次数超过一半的数字
查看>>
剑指offer 27.二叉树的深度
查看>>
剑指offer 29.字符串的排列
查看>>
剑指offer 31.最小的k个树
查看>>