希望使用javascript数组作为哈希键,使用任何数组元素进行检索

时间:2011-06-20 20:36:43

标签: javascript arrays hash

这就是我要做的......

var dual = new Array; 
dual=[voter,thisID];
var matrix = new Array;
matrix[dual]=voteint; //this works..

但我想通过key(array)元素之一或两者轻松访问值:

matrix[*,thisID])=answer; 

除了通配符不存在这种方式,对吗?

一个人可以......

matrix[voter+'.'+thisID]=voteint;

并围绕'。'进行正则表达式匹配。但是有更好/更容易/更快的方式吗?

1 个答案:

答案 0 :(得分:2)

> var dual = new Array; 
> dual=[voter,thisID];

第二个分配替换最初分配给 dual 的数组,使第一个分配无效。它可以写成:

var dual = [voter, thisID];

但前提是选民已声明或创建为变量。

> var matrix = new Array;
> matrix[dual]=voteint; //this works..

如上所述,对矩阵的第一次分配是多余的。

通过将属性分配给dual.toString()矩阵来“工作”,所以如果你写了:

var voter = 'foo';
var thisID = 'baz';
var dual = [foo, baz];

然后

matrix[dual] = voteint;

相当于:

matrix['foo,baz'] = voteing;

如果 voteint 之前已经分配了一个值。

  

但我想轻松访问值   通过键(数组)元素之一或两者:

> matrix[*,thisID])=answer;
  

除了通配符不存在这种方式,   正确?

不在那种背景下,没有。

  

一个人可以......

     

矩阵[选举人+ + thisID ''] = voteint;

如果.被逗号替换,是的。

  

和   围绕'。'进行正则表达式匹配但   是否有更好/更容易/更快的方式?

使用指示了Object的数组被认为是不好的做法,所以最好在这里使用Object。

您唯一合理的选择是使用 for..in 迭代对象的属性,以测试每个属性名称以找到您想要的属性。请注意,您还应该包含hasOwnProperty测试以排除继承的可枚举属性。