数组扁平化
+ 把多维数组拆分成一维数组
+ 核心: 递归遍历原始数组
=> 把每一个层级上的内容拿出来放在一个新数组内
一、原始封装
function flatArr(origin) {
console.log('原始数组 : ', origin)
const newArr = []
function flat(arr, level) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].constructor === Array) {
flat(arr[i], level + 1)
} else {
newArr.push({
content: arr[i],
level: level
})
}
}
}
flat(origin, 1)
return newArr
}
const origin = [ 1, 2, [ 3, 4, [ 5, 6, [ 7, [ 8, [ 9 ] ] ] ] ] ]
const res = flatArr(origin)
console.log('扁平化以后', res)
二、ES6 内数组提供了一个 flat 的方法
const origin = [ 1, 2, [ 3, 4, [ 5, 6, [ 7, [ 8, [ 9 ] ] ] ] ] ]
const res = origin.flat(Infinity)
console.log(res)
三、纯数字的数组进行扁平化
const origin = [ 1, 2, [ 3, 4, [ 5, 6, [ 7, [ 8, [ 9 ] ] ] ] ] ]
const res = origin.toString().split(',').map(item => item - 0)
console.log(res)