Использование строк в качестве ключа карты в JavaScript - PullRequest
1 голос
/ 03 декабря 2011

Я использую эту 'карту' на js:

   var myMap = new Object();
   myMap[key1]=value1; //like this n times...

, но я хочу использовать ключ как некоторую комбинацию двух строк, означающую:

  function getMapValue(str1,str2){...}

Я не против присоединиться кдве строки в одну длинную строку и использовать функцию с длинной строкой

есть идеи?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Вы можете создать карту карт (просто убедитесь, что при обращении к ней существует промежуточная карта)

var myMap = {}; //dont use "new Object()". It is evil.

function insert(k1, k2, v){
   if(!(k1 in myMap)){ myMap[k1] = {}; }
   myMap[k1][k2] = v;
}

function get(k1, k2){
   return myMap[k1] && myMap[k1][k2];
}

И если вы хотите объединить две подстроки в одну, вы можете использоватьоператор плюс для объединения вещей.

var customKey = k1 + '|' + k2;

Просто убедитесь, что ваш разделитель нельзя использовать в обычном ключе, чтобы избежать конфликтов.

0 голосов
/ 03 декабря 2011

Если я правильно понял, следующее должно помочь:

var myMap = {"key1" : "something1", "key2" : "something2"};

для получения значения ключа, который вы используете, либо: return myMap.key1;

Или: return myMap.["key1"];

Если вы имели / сделали: myMap["key1key2"] = "MagicHappens!";

, вы можете использовать myMap.key1key2, чтобы получить значение, или myMap["key1key2"], или даже: return myMap["key1"+"key2"];

Или:

var x = "key1";
var y = "key2";
return myMap[x+y];

в функции getter вы получаете две переменные для ключей, которые затем можете напрямую использовать.

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