如何定义关联数组?

时间:2014-03-01 19:59:43

标签: javascript associative-array definition

我想定义我理解的是一个关联数组(或者一个对象),以便我有如下条目:     “巴斯”= [1,2,5,5,13,​​21]     “伦敦”= [4,7,13,25]

我尝试了以下内容:

var xref = new Object;
xref = [];
obj3 = {
      offices: []
      };
xref.push(obj3);

然后使用

循环浏览我的数据
xref[name].offices.push(number);

但我得到“TypeError:xref [name]未定义”。我做错了什么?

3 个答案:

答案 0 :(得分:1)

像使用obj3一样使用对象:

var xref = {};
xref.obj3 = obj3;
var name = 'obj3';
xref[name].offices.push(number);

答案 1 :(得分:0)

var obj = {
   arr : [],
}

var name = "vinoth";
obj.arr.push(name);
console.log(obj.arr.length);
console.log(obj.arr[0]);

obj.prop = "Vijay";
console.log(obj.prop);

您可以使用object literal

答案 2 :(得分:0)

我意识到我真正想要的只是一个二维数组,第一维是关键(即“BATH”,“LONDON”),第二维是交叉引用列表(即1,2, 5,5,13,​​21) - 所以我还不需要了解Object路线!其他建议可能会起作用并且“更纯粹”,但二维数组更容易让我的老式大脑使用。

所以我做了以下事情:

var xref = [];
// go through source arrays
for (i = 0; i < offices.length; i++) { 
  for (j = 0; j < offices[i].rel.length; j++) {
     // Check if town already exists, if not create array, then push index
     if (xref[offices[i].rel[j].town] === undefined) {
        xref[offices[i].rel[j].town] = [];
        alert('undefined so created '+offices[i].rel[j].town);
        };
     xref[offices[i].rel[j].town].push(i);    // Add index to town list
     };
  };

我相信阅读其他帖子,如果任何'office [i] .rel [j] .town'设置为未定义但我的数据没有这种可能性,我会遇到问题。

现在我可以通过执行以下操作来访问交叉引用列表:

townlist = "";
for (i = 0; i < xref["BATH"].length; i++) {
   townlist += offices[xref["BATH"][i]].name+' ';
   };
alert(townlist);