法1、 Array.prototype.flat()
let arr = [12,79,[54,11]]
console.log(arr.flat())
let arr = [22,[87,34,[99,12,60]]]
let arr1 = arr.flat()
console.log(arr1)
let arr2 = arr1.flat()
console.log(arr2)
let arr = [22, [87, 34, [99, 12, 60]]]
let arr1 = arr.flat(2)
console.log(arr1)
let arr = [2, [8, [1, 23, [2, 56, 1]]]]
let res = arr.flat(Infinity)
console.log(res)
console.log([...new Set(res)])
法2、数组字符串化 split()
let arr = [12, 79, [54, 11, [90, 12]]]
arr += ''
console.log(arr)
arr = arr.split(',')
console.log(arr)
let arr1 = [12, 79, [54, 11, [90, 12]]]
let arr2 = String(arr1).split(',')
console.log(arr2)
console.log(arr2.map(Number))
法3、递归
let reduceDimension = (arr) => {
let resultArr = []
let toArr = (arr) => {
arr.forEach(item => {
item instanceof Array ? toArr(item) : resultArr.push(item)
})
}
toArr(arr)
return resultArr
}
let arr = [22, [87, 34, [99, 12, 60]]]
console.log(reduceDimension(arr))
法4、reduce+concat+递归
let arr = [22, [87, 34, [99, 12, 60]]]
let flattenDeep = (arr) => {
return arr.reduce((acc, val) => {
return Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)
}, [])
}
console.log(flattenDeep(arr))