从对象中检索值?
问题描述:
这必须是重复的,但我一直在谷歌上搜索“从对象中的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']);
或者,如果您希望使用一种方法,您可以创建一个原型方法。
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,string,object还是任何东西,这都是值得的。这是因为我使用了严格平等比较(“===”),它也检查对象类型是否相同。
而且,请注意检查,如果该属性存在是愚蠢的,如果你通过对象的所有键循环反正。显然,当你循环所有的键时,它们都存在。
你可以尝试array.indexOf( '值');不知道它是否适用于对象 –
不,唉:'未捕获的类型错误:对象#