我正在寻找在Javascript中初始化多维数组的最佳方法。我对PHP更加熟悉,我没有义务在为它提供值之前声明数组或维度。
基本上我尝试做的是使用以下格式创建一个数组
catalogue[i]["name"]="a name";
catalogue[i]["description"]="a description";
...等...
如果我执行以下操作:
var catalogue = new Array();
for (i=0; i<otherarray.length;i++)
{
catalogue[i]['name']=otherarray[i];
}
目录未定义,我也尝试使用catalog [i] .name但同样的问题。如果我只分配一个简单的值,如catalog [i] = 2,它可以工作,但这不是我正在寻找的。我找不到我正在寻找的工作实例。
在能够使用新值提供数组之前,是否需要初始化数组的每个可能维度?
由于 劳伦
答案 0 :(得分:2)
var catalogue = new Array();
for (i = 0; i < otherarray.length; i++) {
catalogue[i] = {};
catalogue[i]['name'] = otherarray[i];
}
或者
var catalogue = new Array();
for (i = 0; i < otherarray.length; i++) {
catalogue.push({"name":otherarray[i]});
}
答案 1 :(得分:1)
将它放在循环中以创建要存储值的对象:
catalogue[i] = {};
或catalogue.push({});
您的代码将是这样的:
var catalogue = new Array();
for (i=0; i<otherarray.length;i++)
{
catalogue[i] = {}; // initialization
catalogue[i]['name']=otherarray[i];
}
请注意,您可以在同一行中初始化并指定值:
var catalogue = new Array();
for (i=0; i<otherarray.length;i++)
{
catalogue[i] = {
name: otherarray[i],
otherKey: 'otherValue' // list all of your keys and values
};
}
答案 2 :(得分:1)
如果您想在Javascript中使用数组中的字符串键,则必须声明一个Object。 catalogue
变量本身就是一个数组,但该数组中的每个元素都是一个带有两个键的对象&#34; name&#34;和&#34;描述&#34;。例如,此代码有效:
var c = [1,2,3,4,5];
var n = ['one', 'two', 'three', 'four', 'five'];
var cat = [];
for (i = 0; i < c.length; i++)
{
cat[i] = {
name : n[i],
value: c[i]
};
}
现在,如果你console.dir(cat);
输出了这个结果:
Array[5]
-> 0 : Object
name: "one"
value: 1
-> 1 : Object
name: "two"
value: 2
...