Javascript Can';t实例化一个对象数组

Javascript Can';t实例化一个对象数组,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我试图加载一个对象数组,可以说它本身就是一个数组。因此,我有一个名称(成员)数组,然后我将制作一个主列表,每个名称在一行中包含名称、bug、增强等。因此,我运行了一个简单的for循环来加载主列表,但它告诉我,对于(0)I,主列表[I]。无法加载名称,因为它未定义。有办法解决这个问题吗?谢谢 var mem = getMembers();//get a array of members var memlen = mem.length; var masterList = [memlen]; /

我试图加载一个对象数组,可以说它本身就是一个数组。因此,我有一个名称(成员)数组,然后我将制作一个主列表,每个名称在一行中包含名称、bug、增强等。因此,我运行了一个简单的for循环来加载主列表,但它告诉我,对于(0)I,主列表[I]。无法加载名称,因为它未定义。有办法解决这个问题吗?谢谢

 var mem = getMembers();//get a array of members
 var memlen = mem.length;
 var masterList = [memlen]; //set to number of members
 for(i=0; i < memlen; i++){  
    masterList[i].name = mem[i];  //set .name to the members list name at i
    masterList[i].bugs = 0; 
    masterList[i].enhance = 0; 
    masterList[i].epic = 0; 
    masterList[i].dev = 0; 
    masterList[i].high = 0;
  }
var mem=getMembers()//获取一个成员数组
var memlen=mem.length;
var主列表=[memlen]//设置为成员数
对于(i=0;i
要创建具有预定义大小的阵列,请使用以下命令:

masterList = new Array(memlen);
(使用
masterList=[memlen]
时,您刚刚创建了一个数组,其第一项是
memlen
。这并不是什么问题,因为数组在循环中自动增长,但这不是您的意图)

之后,您需要创建每个
主列表[i]

var masterList = new Array(memlen);
for (var i=0; i < memlen; i++){  
    masterList[i] = {};
    masterList[i].name = mem[i];  //set .name to the members list name at i
var主列表=新数组(memlen);
对于(var i=0;i
如果您不这样做,它是未定义的,因此您就有了错误


我还在循环声明中添加了
var
,以避免意外删除另一个名为
I
var x=[7];
不创建7元素数组。它创建一个索引为0的单元素数组,值为7。您需要执行
var x=array(7)
相反,加上将循环中的每个元素初始化为对象。

这并没有设置长度。它只是创建一个新数组,将单个成员设置为该长度

var masterList = [memlen]; //set to number of members

因为您似乎已经有了一个数组,所以可以使用
.map
构建一个新的数组

 var mem = getMembers();
 var masterList = mem.map(function(item) {
    return {
        name: item.name, bugs: 0, enhance: 0, epic: 0, dev: 0, high: 0
    };
 });

正确的版本是:

var mem = getMembers();//get a array of members
var memlen = mem.length;
var masterList = []; //set to number of members
for(var i=0; i < memlen; i++){  
    masterList[i] = {
        name: mem[i],  //set .name to the members list name at i
        bugs: 0, 
        enhance: 0, 
        epic: 0, 
        dev: 0, 
        high: 0
    };
}
var mem=getMembers();//获取成员数组
var memlen=mem.length;
var masterList=[];//设置为成员数
对于(var i=0;i
map
在IE8上不起作用:否决投票的原因是什么?如果你不理解代码,只需询问一下,我会解释它是如何工作的。除了你不需要初始化数组的长度。只需使用
[]