Javascript多维数组初始化

时间:2015-12-28 16:21:08

标签: javascript arrays multidimensional-array

我正在寻找在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,它可以工作,但这不是我正在寻找的。我找不到我正在寻找的工作实例。

在能够使用新值提供数组之前,是否需要初始化数组的每个可能维度?

由于 劳伦

3 个答案:

答案 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
    ...