手写数组 flatern,考虑多层级
数组 flatern 的意思:[1,2,[3,4]] =>[1,2,3,4]
js
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]));