递归数组平坦器



我正在做一个简单的递归练习——一个使用递归而不是嵌套for循环的数组平坦器。谁能让我知道我错过了什么?非常感谢!

function arrayFlattener(arr) {

//make an empty array for the result
let arrayCopy = []
//for loop through the arr
for (let i = 0; i < arr.length; i++) {

//stor arr[i] in var. called element
let element = arr[i]

//if element is array => call recursive arrayFlattener(element)
if (Array.isArray(element)) {

//push subElement to arrayCopy
arrayCopy.push(arrayFlattener(element))
}
//else element is not array and can be pushed element to arrayCopy
arrayCopy.push(element)

}
return arrayCopy
}

arrayFlattener返回一个数组,因此您的arrayCopy变量将仍然是一个多维数组。要解决这个问题,使用javascript扩展操作符(...):

if (Array.isArray(element)) {

//push subElement to arrayCopy
arrayCopy.push(...arrayFlattener(element))
}
else {
arrayCopy.push(element)
}

最新更新