желая использовать массив javascript в качестве хеш-ключа, получить любой элемент массива - PullRequest
1 голос
/ 21 июня 2011

Вот что я хочу сделать ..

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

, но я бы хотел легко получить доступ к значениям по одному или обоим ключевым (массивным) элементам:

matrix[*,thisID])=answer; 

за исключением того, что подстановочные знаки не существуют таким образом, верно?

можно было бы сделать ...

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

и выполнить сопоставление регулярного выражения вокруг '.'но есть ли лучший / легкий / быстрый способ?

1 Ответ

2 голосов
/ 21 июня 2011
> 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, чтобы исключить унаследованные перечисляемые свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...