Eloquent Javascriptを読んでいて、演習の1つに直面していると、かなり奇妙な動作が見つかりました。(少なくとも私にとっては)
演習では、配列を逆にするために関数を作成するように求められます。配列をループして、元の配列から1つのアイテムをポップし、それを一時的な配列にプッシュして、最終的に返されるようにすることができると思いました。しかし、for-ofループまたは通常のシーケンシャルループのいずれかを使用して配列をループしているため、最後の項目は転送されません。
誰かが正確に何が起こるか教えてもらえますか?
const reverseArray = function(array) {
let rev = [];
for (let x = 0; x <= array.length; x++) {
rev.push(array.pop());
console.log(rev, array)
}
return rev;
};
console.log(reverseArray(["A", "B", "C"]));
出力:
["C"] ["A", "B"]
["C", "B"] ["A"]
["C", "B"]
場合pop()
に適用されるarray
、それは長さ減少array
ように、ループは、それが以前配列の長さより1小さいアイテムを検索し実行します。したがって、できることはarray
、変数にの長さを割り当て、それをfor
ループの比較に使用することです。
let rev = [];
const reverseArray = function(array) {
var length = array.length;
for (let x = 0; x < length; x++) {
rev.push(array.pop());
}
return rev;
};
console.log(reverseArray(["A", "B", "C"]));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加