从对象中按值检索

Retrieve by value from an Object?

本文关键字:检索 对象      更新时间:2023-09-26

这个必须是一个重复,但我一直在谷歌"检索值从对象javascript"answers"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、字符串、对象还是其他类型,这都可以工作。这是因为我使用了严格的相等比较("==="),它还检查对象类型是否相同。

另外,请注意,如果要循环遍历对象的所有键,检查属性是否存在是愚蠢的。显然,当循环遍历所有键时,它们都存在

没有这样的内置方法。你自己的函数看起来也不错。我想不出有什么改进的办法。