Methode 1: Rekursive Durchquerung
const arr = [1, 2,3,[4,5],[7, [8, [9, [10]]]]]
// 方法一:直接遍历法
let arrNew=[]
dealArr(arr,arrNew)
console.log('===== arrNew:',arrNew)
function dealArr(arr){
const length = arr.length
for (let i = 0; i <length; i++) {
const ele = arr[i];
if(Array.isArray(ele)){
dealArr(ele)
}else{
arrNew.push(ele)
}
}
}
Methode zwei: Spread-Operator
const arr = [1, 2,3,[4,5],[7, [8, [9, [10]]]]]
// 方法一:concat结合扩展运算符
let arrNew2 = dealArr2(arr)
console.log('===== arrNew2:',arrNew2)
function dealArr2(arr){
while(arr.some(item=>Array.isArray(item))){
arr = [].concat(...arr)
}
return arr
}
Methode 3: Kombinieren von toString- und Split-Methoden
const arr = [1, 2, 3, [4, 5],[7, [8, [9, [10]]]]]
// 方法三:
const arrStr = arr.toString()
const arrTemp = arrStr.split(',') //此时得到的数组元素是字符串类型
// 将元素转换为number类型
const arrNew3 = arrTemp.map(item => {
return parseInt(item)
})
console.log('arrNew3: ', arrNew3)
Methode 4: Die flache Methode von Javascript
Die flache Methode kann die Tiefe der Struktur angeben. Da wir hier ein Array mit mehreren Ebenen haben, verwenden wir flat (Infinity), um jede Array-Ebene zu verarbeiten.
// 方法四:
const arrNew4= arr.flat(Infinity)
console.log('==== arrNew4: ',arrNew4)
Methode fünf: Reduce()
const arr = [1, 2, 3, [4, 5], [7, [8, [9, [10]]]]]
// 方法五
function platArr(arr) {
return arr.reduce((current, next) => {
const nextNew = Array.isArray(next) ? platArr(next) : next
return current.concat(nextNew)
}, [])
}