Javascript 基于外部变量将信息块推送到数组X次
我正在修改一个游戏,其中使用一些JavaScript将AI推入游戏槽。出于游戏原因,我希望基于外部变量在插槽数组中创建多个条目 我真的不懂JavaScript,所以我一直在摸索我的修改方式,直到现在,所以这可能很简单,但我不明白我应该谷歌搜索的术语 这是常规代码:Javascript 基于外部变量将信息块推送到数组X次,javascript,arrays,Javascript,Arrays,我正在修改一个游戏,其中使用一些JavaScript将AI推入游戏槽。出于游戏原因,我希望基于外部变量在插槽数组中创建多个条目 我真的不懂JavaScript,所以我一直在摸索我的修改方式,直到现在,所以这可能很简单,但我不明白我应该谷歌搜索的术语 这是常规代码: armies.push({ slots: [{ ai: true, name: ai.name, commander: fixupCommander(ai.commander) }], color:
armies.push({
slots: [{
ai: true,
name: ai.name,
commander: fixupCommander(ai.commander)
}],
color: ai.color,
econ_rate: ai.econ_rate,
personality: ai.personality,
spec_tag: '.ai',
alliance_group: 2
});
我希望最后的插槽部分看起来像:
slots: [{
ai: true,
name: ai.name,
commander: fixupCommander(ai.commander)
},
{
ai: true,
name: ai.name,
commander: fixupCommander(ai.commander)
},
{
如果该块的副本数量由外部变量决定,例如ai.COPYSES=3,则在插槽内制作3个块
引擎最多支持ECMAScript 5,或Chromium 28所能支持的任何功能。一种方法是通过简单使用for循环执行
ai的迭代方式。复制
次,每次插入一个副本:
var slotsArray = [];
for (var i = 0; i < ai.copies; i++) {
slotsArray.push({
ai: true,
name: ai.name,
commander: fixupCommander(ai.commander)
});
}
armies.push({
slots: slotsArray,
color: ai.color,
econ_rate: ai.econ_rate,
personality: ai.personality,
spec_tag: '.ai',
alliance_group: 2
});
var slotsArray=[];
对于(变量i=0;i
还有其他一些方法,比如使用函数范式,但这可以做到首先用一个简单的for循环创建插槽。将值推送到数组变量中。然后将该变量用作
插槽的值。您还可以执行slots=new Array(ai.copies)。fill({…})
请记住,Array的构造函数参数必须是整数,否则将创建一个大小为1的普通数组,其中包含构造函数中提供的项。工作非常完美,感谢您的帮助!作为一个小的后续,我希望将循环默认为1,除非它发现ai.copies包含一个值。为此,我假设最好的方法是var count=ai.copies | 1
然后在循环中使用count代替ai.copies?我还很惊讶,循环的右大括号不需要在后面加分号或逗号来将其与armies.push分开,面对面,编辑抱怨我使用了分号或逗号。你能推荐一个好的源代码来理解为什么会这样以及何时使用什么吗?@Quitch在JS中,分号通常不是必需的,除非你想在一行中分隔多个东西(语句…),比如函数(){console.log(“需要分号”);返回0}。但是有一些块不带分号:为了将其默认为1,可以按照您所说的做