javascript-эквивалент java's Map.getKey () - PullRequest
4 голосов
/ 29 февраля 2012

У меня есть карта или, скажем, структура типа ассоциативного массива в JavaScript:

var myMap = {"one": 1, "two": 2, "three": 3};

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

function map_test(value) {
  var myMap = {"one": 1, "two": 2, "three": 3};   
  for (key in myMap) {
    if (myMap[key] == value) {
       alert(key);
       break;
    }
  }
}

Есть ли какая-то функция, подобная Java Map.getKey() или лучший способ получить ключи?

Ответы [ 4 ]

8 голосов
/ 29 февраля 2012
var myMap = {"one": 1, "two": 2, "three": 3};

объявить его как глобальную переменную

function getKey(value){
    var flag=false;
    var keyVal;
    for (key in myMap){
         if (myMap[key] == value){
             flag=true;
             keyVal=key;
             break;
         }
    }
    if(flag){
         return keyVal;
    }
    else{
         return false;
    }
}

Я не думаю, что вам нужна какая-либо функция для получения значения определенного ключа.

Вам просто нужно написать

var value = myMap[key];
3 голосов
/ 29 февраля 2012

для вашего конкретного случая есть более быстрое решение:

function map_test(key,value)
{
var myMap = {"one": 1, "two": 2, "three": 3};
if(myMap.hasOwnProperty(key)) alert(key);
}
map_test('two',2);

Как правило, прямого метода getKeys ()

нет
0 голосов
/ 06 августа 2013

несколько месяцев назад я написал оболочку для хранилища значений собственного ключа, очень похожую на Java Map. Возможно, это будет вам полезно, но помните, что getKey использует линейный поиск, потому что это не HashMap.

Вы можете проверить описание и код класса в моем блоге (потому что это длинный код только методов сахара): http://stamat.wordpress.com/javascript-map-class/

0 голосов
/ 29 февраля 2012

Вам не нужна такая функция, просто напишите myMap[key], вот и все.

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