数组扁平化处理:实现一个flatten方法,使得输入一个数组,该数组里面的元素也能够是数组,该方法会输出一个扁平化的数组。
javascript
举个栗子
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]; let outputArr = [1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]
java
res
空数组进行存储,并做为结果返回push
到空数组res
中Array
类型,咱们使用concat
将其与res
拼接起来。可是要注意,该元素的元素可能仍是Array
类型,好比对于元素[11, 12, [12, 13, [14]]]]
来讲,它的元素还包括Array
对象,所以,咱们在这里,须要进行递归调用item instanceof Array
,但咱们能够用ES6
的Array.isArray(item)
function flatten(arr){
let res = []
arr.forEach((item)=>{
Array.isArray(item)?res = res.concat(flatten(item)):res.push(item)
})
return res
}
复制代码
基于上面的思路,也能够改写成下面这种形式:数组
function flatten(arr){
arr.reduce((prev,current)=>{
return prev.concat(Array.isArray(item)?flatten(item):item);
},[])
}
复制代码