したがって、次のようなコードのブロックがあります。
stack.forEach(function(element){
//sys.puts(sys.inspect(element, false, null));
console.log('-----element start-----');
console.log(element.type + ':' + element.raw);
console.log('-----element end-----');
if(element.children){
element.children.forEach(function(childElement){
stack.push(childElement);
});
}
});
問題は、これが動作するスタックを除いて私が動作するように動作しておらず、JavaScript自体の問題でこれが発生するかどうか疑問に思っていることです。子ごとにstack.pushを呼び出して処理のためにスタックに追加すると、最初のstack.forEach()がそれを取得していないようで、トップレベルの要素にのみログが記録されているかどうかがわかります。 。この直後に別のstack.forEach()を実行しようとすると、次のレベルの子要素が表示されるため、.pushが子要素をスタックに確実に追加していることがわかります。
.forEach()はデータをそのまま取得し、foreach内で発生した場合、更新を取得しないようです。これはJavaScriptにも当てはまりますか?同じことを達成できる別の方法はありますか(最上位の要素とその下のすべてのレベルの子要素を処理できます)?