这就是我要做的......
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;
并围绕'。'进行正则表达式匹配。但是有更好/更容易/更快的方式吗?
答案 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测试以排除继承的可枚举属性。