这个必须是重复的,但我一直在谷歌搜索“按对象javascript的值检索”和“按值查找javascript查找对象”和每个变种并且无处可去,所以道歉并且这里去了。
假设我有一个像这样的JavaScript对象:
var options = {"ford": "red", "citroen": "blue"};
如何查找值blue
以获取citroen
?
我猜是总是有'写你自己的功能'的路线:
function returnbyValue(options, v):
for (var prop in options) {
if (options.hasOwnProperty(v)) {
if (options[prop] === v) {
return prop;
}
}
}
return null;
但JavaScript是否内置了任何内容,或者有更简洁的方法来执行此操作?
答案 0 :(得分:2)
没有这样的内置方法。你自己的功能对我来说很好看。我无法弄清楚它的任何改进。
答案 1 :(得分:1)
可以像关联数组一样访问对象的属性! 这就像一个魅力!
var obj = {
'key': 'val'
};
alert( obj['key'] );
或者,如果您希望使用方法,则可以创建原型方法。
Object.prototype.getPropertyByString = function( str ) {
return this[str];
};
alert( obj.getPropertyByString( 'key' ) );
编辑:哇我刚注意到我没有回答你的问题,我的道歉!请允许我获得第二次机会。
没有内置功能,但下面的脚本有效!
var obj = {
'key': 'val'
};
Object.prototype.getKeyByValue = function( object ) {
for(var key in this) {
if(this.key === object) {
return key;
}
}
return null;
};
alert( obj.getKeyByValue( 'val' ) );
它遍历对象并返回键,如果它匹配一个值。无论值是int,字符串,对象还是其他任何内容,这都将起作用。这是因为我使用了严格的相等比较(“===”),它也会检查对象类型是否相同。
此外,请注意,如果您正在遍历对象的所有键,则检查属性是否存在是愚蠢的。显然,当你循环遍历所有键时,它们就存在了。