2017-01-09 50 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]時,我仍然獲得-1 & -1作爲我的值x & y。當我訪問索引1時,我只得到第一個值。似乎我所有的索引都轉移了,但我不知道爲什麼會發生這種情況。

+2

但是'.push()'總是添加到數組的末尾,並且您的數組從一個開始。 – Pointy

+0

我明白了。我對JavaScript不太熟悉,看起來'det:[{x:-1,y:-1}]'line在我的'test'中是數組中的第一項? – 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

@Progrog - 我認爲他試圖重新初始化一個現有的數組。如果不是,他可以從'var test = {det:[]}'開始並使用push。 –