私は現在、javascript のようないくつかのメソッドを練習していますshift(), unshift(), push(), pop()
。配列、開始点、終了点の 3 つの引数を取る小さな関数を書きたいと思います。これは、配列の一部を切り取ってから、新しい配列と切り取った部分の両方を返すために使用されます。役に立つことでも大したことでもなく、JavaScript を練習したいだけです。
しかし、原因がわからない奇妙なことに遭遇しました。
ここが奇妙な部分です
var a1 = [];
var a2 = [9,8,7,6,5,4,3,2,1];
for(var i=0; i<a2.length; i++){
a1.unshift(a2.shift())
}
だから私はこのコードを書きました、そして期待される結果は
a1 = [1,2,4,5,6,7,8,9]
a2 = []
しかし、コードを実行すると、これが実際に起こったことでした
a1 = [5,6,7,8,9]
a2 = [4,3,2,1]
関数が十分な時間ループしていないように見えるので、 a2.length を整数に変更しようとしました: 9
コードを作るもの
var a1 = [];
var a2 = [9,8,7,6,5,4,3,2,1];
for(var i=0; i<9; i++){
a1.unshift(a2.shift())
}
そして、それはうまくいきました!
次に、これへのアプローチを変更します
var a1 = [];
var a2 = [9,8,7,6,5,4,3,2,1]
var aLength = a2.length;
for(var i=0; i<aLength; i++){
a1.unshift(a2.shift())
}
そして、これもうまくいきました!!!
その理由を誰か教えてくれませんか??? どうすればループを改善できますか?
お時間をいただき、誠にありがとうございました。