0

次のようなオブジェクトが与えられた場合:

  taste =
    0: "Hate"
    1: "Really Dislike"
    2: "Dislike"
    3: ""
    4: "Like"
    5: "Really Like"
    6: "Love"

値を指定するとキーを返す関数を探しています。私は次のことを試しました

  Object::getKeyByVal = (value) ->
    for prop of this
      return prop  if this[prop] is value  if @hasOwnProperty(prop)

これを使用すると、alert time.getKeyByVal("< 1.5 hours") は実際には 8 を返しますが、残りのスクリプトを強制終了するエラーが発生します。

Uncaught TypeError: Object function (value) {
      var prop;
      for (prop in this) {
        if (this.hasOwnProperty(prop) ? this[prop] === value : void 0) {
          return prop;
        }
      }
    } has no method 'exec' 

特定の値のキーを取得するより良い方法はありますか?

4

1 に答える 1

1

これを試して :

getKeyFromValue = (obj,value)->
  for own k,v of obj
    if v==value
      return k

o =
  a:1
  b:2
  c:3
  d:4

console.log(getKeyFromValue(o,3)) # should output c

ライブデモをチェック

于 2013-02-11T04:54:12.763 に答える