普通 for 循环
var arr3 = [1, 2, [3, ,4, [5, [6]]]]
/**
* 普通for循环
*
* @param arr
* @param n
* @returns {[]|*}
*/
function myFlat(arr, n= 1) {
if (n <= 0 || arr.length <= 1) {
return arr
}
let res = []
let len = arr.length
for (let i = 0
let item = arr[i]
if (Array.isArray(item)) {
res.push(...myFlat(item, n - 1))
} else {
res.push(item)
}
}
return res
}
关于 reduce
console.log([1].reduce((pre, cur) =>{
console.log(pre, cur)
return pre + cur
}))
用 reduce 实现
function myFlat2(arr, n = 1) {
if (n <= 0 || arr.length <= 1) {
return arr
}
return arr.reduce((pre, cur) => {
if (Array.isArray(cur)) {
return pre.concat(myFlat2(cur, n - 1))
}
return pre.concat(cur)
}, [])
}
var arr3 = [1, 2, [3, ,4, [5, [6]]]];
console.log(myFlat2(arr3, 2))