本文主要是介绍将嵌套递归成一维数组,数组扁平化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// 原数组
var a = [1, 2, [3, 4, [5, [6]]]]
// 期望得到 => [1, 2, 3, 4, 5, 6]
方法一:reduce()
function flatten(a) {return a.reduce((total, currentValue) => {return total.concat(Array.isArray(currentValue)? flatten(currentValue): currentValue)},[])
}
// => [1, 2, 3, 4, 5, 6]
方法二:lodash 的 flattenDeep()
import '_' from 'lodash'_.flattenDeep(a)// => [1, 2, 3, 4, 5, 6]
方法三:手写一个flat方法
function flat(arr) {// 判断数组中是否有深层数组const isDeep = arr.some(item => item instanceof Array)// 无深层数组,返回当前数组if (!isDeep) {return arr}// 有深层数组,继续拍平const res = Array.prototype.concat.apply([], arr)flat(res)
}flat(a)
// => [1, 2, 3, 4, 5, 6]
三种方法都是得到一个新的数组,不改变原数组
这篇关于将嵌套递归成一维数组,数组扁平化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!