1
配列を平坦化するための単純な再帰的なアプローチに取り組んでいます。私はこれ(How to flatten nested array in javascript?)上の他のスレッドを見てきましたが、私は.concatや.reduceを使わないとやりたいと思っています。JavaScriptで.concatまたは.reduceを使用しないネストされた配列への再帰的アプローチ
このループはループを維持しますが、最もネストされた配列をヒットし、その中の文字を返すように見える理由はわかりません。
ありがとうございます!
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
アンドリューがやった! forループで 'var'を追加するとRJMのコメントは真実ではないと思います。皆さんありがとう!ヘルプをよろしくお願いします。 – skdfsdfa
@skdfsdfa、RJMは問題の説明で正しいです。彼らはあなたのコードが無限ループを引き起こしている理由を理由に、より多くのコンテキストを追加しようとしていました。 – Andrew