Javascript 如何定义关联数组?

Javascript 如何定义关联数组?,javascript,associative-array,definition,Javascript,Associative Array,Definition,我想定义我所理解的关联数组(或对象),这样我就有了如下条目: “巴斯”=[1,2,5,5,13,21] “伦敦”=[4,7,13,25] 我尝试了以下方法: var xref = new Object; xref = []; obj3 = { offices: [] }; xref.push(obj3); var xref = []; // go through source arrays for (i = 0; i < offices.length; i++)

我想定义我所理解的关联数组(或对象),这样我就有了如下条目: “巴斯”=[1,2,5,5,13,21] “伦敦”=[4,7,13,25]

我尝试了以下方法:

var xref = new Object;
xref = [];
obj3 = {
      offices: []
      };
xref.push(obj3);
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
     };
  };
然后使用

xref[name].offices.push(number);

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

像使用obj3一样使用对象:

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

你可以使用
对象文字

我意识到我真正想要的是一个二维数组,第一个维度是键(即“BATH”、“LONDON”),第二个维度是交叉引用列表(即1,2,5,5,13,21),所以我还不需要理解对象路径!其他的建议可能很有效,而且“更纯净”,但二维阵列对我的老式大脑来说更容易使用

因此,我做了以下工作:

var xref = new Object;
xref = [];
obj3 = {
      offices: []
      };
xref.push(obj3);
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
     };
  };
var xref=[];
//检查源数组
对于(i=0;i
通过阅读其他帖子,我相信,如果将“offices[I].rel[j].town”中的任何一个设置为未定义,我都会遇到问题,但数据没有这种可能性

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

townlist = "";
for (i = 0; i < xref["BATH"].length; i++) {
   townlist += offices[xref["BATH"][i]].name+' ';
   };
alert(townlist);
townlist=”“;
对于(i=0;i
在您的示例中,
名称是什么?此外,您应该使用对象,而不是数组。使用
新对象初始化
xref
,然后在下一行中指定值
[]
,这有些毫无意义。我建议阅读。
var xref=新对象;外部参照=[]
var xref=new Object()相同;xref=新数组()。不能在javascript数组中使用命名键。删除
[]
声明。我的坏消息是,我在发布声明后不久就意识到了我的错误。