从Object检索值?

时间:2011-09-29 09:48:42

标签: javascript

这个必须是重复的,但我一直在谷歌搜索“按对象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是否内置了任何内容,或者有更简洁的方法来执行此操作?

2 个答案:

答案 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,字符串,对象还是其他任何内容,这都将起作用。这是因为我使用了严格的相等比较(“===”),它也会检查对象类型是否相同。

此外,请注意,如果您正在遍历对象的所有键,则检查属性是否存在是愚蠢的。显然,当你循环遍历所有键时,它们就存在了。