搜尋

首頁  >  問答  >  主體

javascript - Js物件怎麼透過value值拿到key值?

一般透過obj.key可以拿到value,那我要反過來,該怎麼做?

曾经蜡笔没有小新曾经蜡笔没有小新2843 天前1007

全部回覆(6)我來回復

  • 大家讲道理

    大家讲道理2017-06-30 10:00:56

    keyvalue的映射是單向的,並且value並不具有唯一性。
    所以由key拿到value是沒有問題的,但是反之則不行。

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-30 10:00:56

    for...in循環物件判斷獲取?

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-30 10:00:56

    我有個笨方法

    遍歷對象,判斷目前對象的 value 是否等於要查的值,如果匹配到輸出key

    回覆
    0
  • 世界只因有你

    世界只因有你2017-06-30 10:00:56

    輸出 value 並不是唯一的,透過 value 拿到可以不行 。

    回覆
    0
  • 三叔

    三叔2017-06-30 10:00:56

    參考一下,如果用 lodash 可以直接用 _.findKey

    var data = {
      a: 1,
      b: 'string',
      c: {},
      d: {a: 98, b: 'str'}
    }
    
    function findKey (value, compare = (a, b) => a === b) {
      return Object.keys(data).find(k => compare(data[k], value))
    }
    
    var val = data.b
    findKey(val) // b
    
    // 自定义比较函数,比如结合 lodash 可以
    findKey({a: 98, b: 'str'}, _.isEqual) // d

    回覆
    0
  • 怪我咯

    怪我咯2017-06-30 10:00:56

    能循環拿嗎? $.each這樣拿出來

    回覆
    0
  • 取消回覆