1
我正在研究一種簡單的遞歸方法來平坦化數組,我無法弄清楚我要去哪裏錯了。我看過其他線程(How to flatten nested array in javascript?),但我試圖做到這一點,而不使用.concat或.reduce。嵌套數組的遞歸方法,而不使用.concat或.reduce在JavaScript中
這一個不斷循環,但我不知道爲什麼 - 它看起來應該擊中最嵌套的數組並返回其中的任何字符。
謝謝!
var ret= [];
var nested = [['a','b'],[],'c',['d','e']];
function flatten(arr) {
for (i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatten(arr[i]);
} else {
ret.push(arr[i]);
}
}
}
flatten(nested);
這只是說明了問題的一部分。遞歸導致稍後調用'flatten'來重用相同的全局變量並覆蓋其中的值,而外部調用中的循環仍處於迭代中。 – RJM
安德魯做到了!我不認爲RJM的評論是真實的,因爲它在for循環中增加了'var'。謝謝大家!感謝幫助 – skdfsdfa
@skdfsdfa,RJM在他們對問題的解釋中是正確的。他們試圖添加更多的上下文,理由是**爲什麼**代碼導致無限循環。 – Andrew