数组的扁平化就是将一个 "多维数组" 转化成一个 "一维数组"
const arr = [1, 2, 3, 4, { name: '张三' }, [5, 6, 7, 8, { name: '李四' }, [9, 10, 11, 12, { name: '王五' }]]]
// 1. 面试版
// 该函数 接收一个 参数, 也就是 你要实现扁平化的一个数组
function flat(origin) {
// 1. 创建一个空数组, 用来接收扁平化以后的元素内容
const newArr = []
// 2. 利用递归函数, 实现数组的扁平化
function fn(fnOrigin) {
fnOrigin.forEach((item) => {
if (Object.prototype.toString.call(item) === '[object Array]') {
// 说明当前 item 是一个数组, 所此时需要递归调用 fn 函数
fn(item)
} else {
// 如果当前分支执行, 说明 item 一定不是一个数组
newArr.push(item)
}
})
}
fn(origin)
// 3. 把处理好的数组(newArr) 返回出去
return newArr
}
const flatArr = flat(arr)
console.log(flatArr)
// 2. 工作版(一行搞定) Infinity 无穷
console.log(arr)
console.log(arr.flat(1))
console.log(arr.flat(2))
console.log(arr.flat(Infinity))