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

在Javascript中按值返回对象属性的名称?,javascript,jquery,Javascript,Jquery,我有一个映射ID的javascript对象: codes = { "admin" : 3, "manager" : 2, "basic" : 1 } 给定一个值 accountType=2 …找到相应密钥(“管理器”)的最优雅方式是什么 jQuery版本,但在这里使用它并没有什么好处: $.each(codes, function(key, value){ if (value == accountType) alert(key

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

codes = { 
    "admin" : 3,
    "manager" : 2,
    "basic" : 1
}
给定一个值

accountType=2

…找到相应密钥(“管理器”)的最优雅方式是什么

jQuery版本,但在这里使用它并没有什么好处:

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

jQuery版本,但在这里使用它并没有什么好处:

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

如果您经常这样做,保留一个对象用于反向查找将是非常有效的:

codeNames = { 
  "3": "admin",
  "2": "manager",
  "1": "basic"
}
现在,您只需按名称访问属性:

var name = codeNames[accountType];
您可以从
code
对象创建查找对象:

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

如果经常这样做,则保留一个对象以用于反向查找将是非常有效的:

codeNames = { 
  "3": "admin",
  "2": "manager",
  "1": "basic"
}
现在,您只需按名称访问属性:

var name = codeNames[accountType];
您可以从
code
对象创建查找对象:

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

谢谢-我想知道是否有一种方法可以不用手动遍历properties@user1031947恐怕不行。抱歉。@user1031947,但是如果对象键值对像:
code={“3”:“admin”,“2”:“manager”,“1”:“basic”}
您可以使用这个:
code[“2”]
谢谢-我想知道是否有一种方法可以不用手动遍历properties@user1031947恐怕不行。抱歉。@user1031947,但是如果对象键值对像:
codes={“3”:“admin”,“2”:“manager”,“1”:“basic”}
你可以用这个:
codes[“2”]
为什么要否决?如果你不解释你认为错误的地方,那就无法改进答案。+1,尽管我认为两个对象对应两个不同的查找是很糟糕的。这会带来更多的痛苦而不是收获。为什么要投否决票?如果你不解释你认为错误的地方,那就无法改进答案。+1,尽管我认为两个对象对应两个不同的查找是很糟糕的。对于像
{admin:2,manager:2}
这样的对象,如果要将db值映射到更可读的对象,应该怎么办。(我对使用联接表不感兴趣。)像
{admin:2,manager:2}
这样的对象应该如何将db值映射到更可读的对象。(我不想为此使用联接表。)