我目前有一个硬编码数组,如下所示:
var aliens = [
{left: 100, top: 100},
{left: 200, top: 100},
{left: 300, top: 100},
{left: 400, top: 100},
{left: 500, top: 100},
{left: 600, top: 100},
{left: 700, top: 100},
{left: 800, top: 100}
];
我想创建一个动态创建它的函数,而不是将其全部硬编码。我试过这个:
var aliens = [];
for (var x = 100; x < 900; x+=100) {
aliens = {left: x, top: 100};
}
但是,这并不会增加x。我有理由相信我错过了一些非常简单的东西,但我不知道它是什么。我试过制作
aliens += {left: x, top: 100};
但这也不起作用。我错过了什么?
答案 0 :(得分:3)
你应该推到外星人对象:
aliens.push({...});
工作示例:
var aliens = [];
for (var x = 100; x < 900; x += 100) {
aliens.push({
left: x,
top: 100
});
}
console.log(aliens);
答案 1 :(得分:2)
罗。 Use push()
:
aliens.push( {left: x, top: 100} )
答案 2 :(得分:1)
上述代码的问题在于您正在重新分配变量aliens
。如果你去console.log(aliens)
,这就是你会看到的:
{left: 800, top: 100};
这意味着它从指向数组的变量转到指向上面打印的对象。
正如其他答案所指出的那样,在一个名为.push()
的数组原型上有一个方便的方法。您可以找到here的文档。
还有另一种方法可以让你拥有与上面使用数组索引类似的代码:
var aliens = [];
for (var x = 1; x < 9; x++) {
aliens[x-1] = {left: x * 100, top: 100};
}
当你的指数变得重要时,这可能会非常强大&#34;指向&#34;至。应该注意的是,即使这有效,如果您只想要在数组的末尾或开头添加内容,则应分别使用推送或非移位方法。但是,如果您想在其他位置(例如数组的中间)就地更改数组元素,这可能会起作用。