簡體   English   中英

獲取與js對象中的值對應的鍵

[英]get key corresponding to value in js object

我有一個對象,例如:

var inspectionMapping = {'a_pillar_lh' : "A Pillar LH",
                       'b_pillar_lh'  : "B Pillar LH"};

console.log(inspectionMapping['a_pillar_lh']);
// Which gives me correct "A Pillar LH".

我能夠獲得與key對應的值。

但是我無法獲得與javascript對象中的值對應的鍵。

比如我有"A Pillar LH" ,我需要得到相應的密鑰a_pillar_lh

我試過使用indexOf但沒有成功。

您可以使用Object.keys()簡單地獲取所有鍵,然后使用.find()函數從該數組中獲取鍵,然后將其包裝在函數中以使其模塊化。

 var inspectionMapping = { 'a_pillar_lh': "A Pillar LH", 'b_pillar_lh': "B Pillar LH" }; Object.prototype.getKey = function(value) { var object = this; return Object.keys(object).find(key => object[key] === value); }; alert(inspectionMapping.getKey("A Pillar LH")); 

編輯對於那些不想使用ES6的人

Object.prototype.getKey = function(value) {
      var object = this;
      for(var key in object){
         if(object[key]==value) return key;
      }
};

嘗試這個。

Object.keys(inspectionMapping).find(key => inspectionMapping[key] === 'A Pillar LH');

如果有人對Lodash解決方案感興趣,這是我常用的一個。 此方法反轉對象,交換值的值,然后通過查找此新對象的值來查找鍵。

 var inspectionMapping = { 'a_pillar_lh': "A Pillar LH", 'b_pillar_lh': "B Pillar LH" }; var getKey = function( obj, value ) { var inverse = _.invert( obj ); return _.get( inverse, value, false ); }; alert( 'The key for "A Pillar LH" is "' + getKey( inspectionMapping, 'A Pillar LH' ) + '"' ); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM