这必须是重复的,但我一直在谷歌搜索“从对象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 有内置的东西吗,或者有没有更简洁的方法来做到这一点?
最佳答案
对象的属性可以像关联数组一样被访问! 这真是太神奇了!
var obj = {
'key': 'val'
};
alert( obj['key'] );
或者,如果您想使用方法,您可以创建原型(prototype)方法。
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、字符串、对象还是任何东西,这都会起作用。这是因为我使用了严格相等比较(“= =”),它还检查对象类型是否相同。
另外,请注意,如果您无论如何都要循环遍历对象的所有键,则检查属性是否存在是愚蠢的。显然,当您循环遍历所有键时,它们就存在。
关于javascript - 从对象中按值检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595481/