2017-01-09 51 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。 –