我正在做一个简单的递归练习——一个使用递归而不是嵌套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)
}