跳到主要内容

手写数组 flatern,考虑多层级

数组 flatern 的意思:[1,2,[3,4]] =>[1,2,3,4]

function flat(arr) {
// 验证 arr 中,是否还有深层数组 [1,2,[3,4]]
const isDeep = arr.some(item => item instanceof Array)
if (!isDeep) {
return arr // 已经是 flatern [1,2,3,4]
}
// 也可以使用 [].concat(1,2,[3,4]),但 apply 第二个参数可以接数组
const res = Array.prototype.concat.apply([], arr)
return flat(res) // 递归
}
// [1, 2, 3, 4, 5, 6, 7]
console.log(flat([1, 2, [3, 4, [5, 6]], 7]))