在Javascript中按值返回对象属性的名称?

时间:2013-03-16 20:00:22

标签: javascript jquery

我有一个映射ids的javascript对象:

codes = { 
    "admin" : 3,
    "manager" : 2,
    "basic" : 1
}

给定值......

  

accountType = 2;

...找到相应密钥(“经理”)的最优雅方式是什么?

2 个答案:

答案 0 :(得分:3)

for (var i in codes){
    if (codes[i] == accountType)
        alert(i);
}

Live DEMO

jQuery版本,虽然在这里使用它确实没有任何好处:

$.each(codes, function(key, value){
        if (value == accountType)
            alert(key);
});

Live DEMO

答案 1 :(得分:1)

如果你这么做,那么保持一个对象用于反向查找是有效的:

codeNames = { 
  "3": "admin",
  "2": "manager",
  "1": "basic"
}

现在您只需按名称访问属性:

var name = codeNames[accountType];

您可以从codes对象创建查找对象:

var codeNames = {};
for (var i in codes){
  codeNames[codes[i]] = i;
}