> var dual = new Array;
> dual=[voter,thisID];
Второе назначение заменяет массив, изначально присвоенный dual , что делает первое назначение бесполезным.Это может быть написано:
var dual = [voter, thisID];
, но только если избиратель и dual были ранее объявлены или созданы как переменные.
> var matrix = new Array;
> matrix[dual]=voteint; //this works..
Как и выше, первое присваивание matrix является избыточным.
«Работает», присваивая свойству matrix , то есть dual.toString()
, так что если вызаписано:
var voter = 'foo';
var thisID = 'baz';
var dual = [foo, baz];
затем
matrix[dual] = voteint;
эквивалентно:
matrix['foo,baz'] = voteing;
, если voiceint было присвоено значение ранее.
, но я хотел бы легко получить доступ к значениям по одному или обоим ключевым (массивным) элементам:
> matrix[*,thisID])=answer;
, за исключением того, что подстановочные знаки не существуютКстати, верно?
Не в этом контексте, нет.
можно было бы сделать ...
matrix [voter + '.' + thisID]= voiceint;
Если .
был заменен запятой, то да.
и сопоставьте регулярное выражение вокруг '.'но есть ли лучший / более простой / быстрый способ?
Использование массива, в котором указан объект, считается плохой практикой, поэтому лучше использовать объект здесь.
Единственный разумный вариант - перебирать свойства объекта, используя for..in , чтобы проверить каждое имя свойства и найти нужное.Обратите внимание, что вы должны также включить тест hasOwnProperty, чтобы исключить унаследованные перечисляемые свойства.