javascript - 从对象中按值检索?

标签 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 有内置的东西吗,或者有没有更简洁的方法来做到这一点?

最佳答案

对象的属性可以像关联数组一样被访问! 这真是太神奇了!

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/

相关文章:

javascript - HTML5 Canvas base64

javascript - 无法解析模块 `scheduler/tracing` react native

javascript - 如何使用递归对给定整数以下的所有整数求和

javascript - 使用动画(Javascript)动态更新 amCharts 4 世界地图?

javascript - ThreeJS r69 轨迹球控件、摄像头和定向灯

javascript - 如何通过单击操作栏中溢出图标下的项目来调用其他 Activity

javascript - 使用表格更改 div 空间

javascript - Canvas 线性缩小

javascript - 如何使用nodemailer发送pdf附件?

javascript - `toFixed()` 对某些数字无法正常工作