【问题标题】:Get key using value from an object in JavaScript?使用 JavaScript 中对象的值获取键?
【发布时间】:2012-10-27 18:21:03
【问题描述】:
c =      {
            "UNKNOWN_ERR" : 0,
            "INDEX_SIZE_ERR" : 1,
            "DOMSTRING_SIZE_ERR" : 2,
            "HIERARCHY_REQUEST_ERR" : 3,
            "WRONG_DOCUMENT_ERR" : 4,
            "INVALID_CHARACTER_ERR" : 5,
            "NO_DATA_ALLOWED_ERR" : 6,
            "NO_MODIFICATION_ALLOWED_ERR" : 7,
            "NOT_FOUND_ERR" : 8,
            "NOT_SUPPORTED_ERR" : 9}

使用密钥获取值很容易,我只使用c["UNKNOWN_ERR"] 中的密钥获取0,假设所有值都是唯一的,从值(错误代码)中获取密钥(消息)是安全的.

是否有标准的方法可以做到这一点,还是我需要编写一个函数来查看所有键并搜索该特定值?

【问题讨论】:

标签: javascript object hashmap


【解决方案1】:

试试findKey()lodash 方法:

var key = _.findKey(c, v => v === val)

其中 val - 属性值。

【讨论】:

  • 原来的问题好像没有问到外部库的问题。
【解决方案2】:

es6 find 方法:

const getKey = (obj,val) => Object.keys(obj).find(key => obj[key] === val);

你的情况

console.log(getKey(c,1)); // INDEX_SIZE_ERR

【讨论】:

    【解决方案3】:

    Underscore 提供了一个更简单的解决方案

    您也可以使用此代码获取密钥

    var errKey = _.invert(c)[errCode];
    

    例如如果你使用 errCode = 3 如下所示

    var errKey = _.invert(c)[3];
    

    然后

    errKey 将是 HIERARCHY_REQUEST_ERR

    【讨论】:

      【解决方案4】:

      正如您已经假设您需要遍历对象的属性并检查值。

      for(var key in c) {
          if(c[key] === whatever) {
              // do stuff with key
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-25
        • 2021-10-27
        • 2020-09-02
        • 2017-12-28
        • 1970-01-01
        • 2017-11-09
        相关资源
        最近更新 更多