javascript相当于java Map.getKey()

时间:2012-02-29 08:05:00

标签: javascript data-structures

我在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 个答案:

答案 0 :(得分:8)

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];

答案 1 :(得分:3)

对于您的具体情况,有一个更快的解决方案:

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

一般来说,没有直接的方法getKeys()

答案 2 :(得分:0)

你不需要这样的功能,只需写myMap[key],就是这样。

答案 3 :(得分:0)

大约几个月前,我写了一个与Java Map非常类似的本机键值存储的包装器。也许它对你有用,但请记住getKey使用线性搜索,因为这不是HashMap。

您可以在我的博客上查看该课程的说明和代码(因为它只是糖方法的长代码):http://stamat.wordpress.com/javascript-map-class/