实现打平数组的方法

Martin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// reduce
function flatArray1 (arr) {
return arr.reduce((pre, cur)=>{
return pre.concat(Array.isArray(cur) ? flatArray1(cur) : cur)
},[])
}
// 递归遍历

function flatArray2 (arr) {
let newArr = []
for (let i = 0; i< arr.length; i++) {
if (Array.isArray(arr[i])) {
newArr = newArr.concat(flatArray2(arr[i]))
} else {
newArr.push(arr[i])
}
}
return newArr
}

// ...扩展符
function flatArray3 (arr) {
//使用while循环 只要arr中有数组就会一直循环
while(arr.some(item=>Array.isArray(item))){
arr = [].concat(...arr)
}
return arr
}