2017-01-09 15 views
-1

にプッシュ私はJavaScript変数を持っている、と私は、次のforループして、別の関数でそれを初期化しようとしている:いくつかのためにJavaScriptはインデックス1ではなく0

var test = { 
 
    det: [{x: -1, y: -1}] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
     test.det.push({x:10+i, y:10}); 
 
} 
 

 
console.log(test.det);

理由は、test.det[0]にアクセスしようとすると、が私の値であるx & yになります。インデックス1にアクセスすると最初の値がプッシュされるだけです。すべてのインデックスがシフトされているようですが、どうしてそれが起こるのかわかりません。

+2

しかし '.pushを()'は常に配列の最後に追加され、配列はその中に1つのものから始まります。 – Pointy

+0

私は参照してください。私はjavascriptにあまり慣れていないので、 'test:' {det:[{x:-1、y:-1}] '行は配列の最初の項目ですか? – mysticalstick

+1

空の配列で始める場合は '[]'を使ってください。 – Pointy

答えて

2

Array#pushは、現在の最後の項目の後に別の項目を追加します。再使用の割り当て=初期化するには:

var test = { 
 
    det: [{x: -1, y: -1}] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
    test.det[i] = ({x:10+i, y:10}); 
 
} 
 

 
console.log(test);

それとも、配列をクリアして、Array#pushを使用します。

var test = { 
 
    det: [] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
    test.det.push({x:10+i, y:10}); 
 
} 
 

 
console.log(test);

+0

このコードでは、 'det'の内容を宣言する理由はありません。ただ、 'var test = {det:[]}'を使ってください。 – Phrogz

+0

@Phrogz - 私は彼が既存の配列を再初期化しようとしていると思います。もしそうでなければ、彼は 'var test = {det:[]}'で始めることができ、pushを使います。 –

関連する問題