Javascript 基于外部变量将信息块推送到数组X次

Javascript 基于外部变量将信息块推送到数组X次,javascript,arrays,Javascript,Arrays,我正在修改一个游戏,其中使用一些JavaScript将AI推入游戏槽。出于游戏原因,我希望基于外部变量在插槽数组中创建多个条目 我真的不懂JavaScript,所以我一直在摸索我的修改方式,直到现在,所以这可能很简单,但我不明白我应该谷歌搜索的术语 这是常规代码: armies.push({ slots: [{ ai: true, name: ai.name, commander: fixupCommander(ai.commander) }], color:

我正在修改一个游戏,其中使用一些JavaScript将AI推入游戏槽。出于游戏原因,我希望基于外部变量在插槽数组中创建多个条目

我真的不懂JavaScript,所以我一直在摸索我的修改方式,直到现在,所以这可能很简单,但我不明白我应该谷歌搜索的术语

这是常规代码:

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,可以按照您所说的做