在 JavaScript 中按值搜尋物件


假設我們有一個類似如下的物件 −

const obj = {
   "name": "Vivek Sharma",
   "occupation": "Software Engineer",
   "age": 23,
   "contacts": [{
      "name": "Mukul Sharma",
      "occupation": "Software Engineer",
      "age": 31,
   }, {
      "name": "Jay Sharma",
      "occupation": "Software Engineer",
      "age": 27,
   }, {
      "name": "Rajan Sharma",
      "occupation": "Software Engineer",
      "age": 32,
   }]
};

在這裡只嵌套了一層,但巢狀也可以更深。我們需要編寫一個物件函式 Object.prototype.keysOf(),它取一個值並返回一個數組,其中包含引數中指定的值的所有鍵。

現在,讓我們為這個函式編寫程式碼 −

範例

const obj = {
   "name": "Vivek Sharma",
   "occupation": "Software Engineer",
   "age": 23,
   "contacts": [{
      "name": "Mukul Sharma",
      "occupation": "Software Engineer",
      "age": 31,
   }, {
      "name": "Jay Sharma",
      "occupation": "Software Engineer",
      "age": 27,
   }, {
         "name": "Rajan Sharma",
         "occupation": "Software Engineer",
         "age": 32,
      }]
   };
   const keysOf = function(val, obj = this, res = []){
      const keys = Object.keys(obj);
      for(let ind = 0; ind < keys.length; ind++){
         if(obj[keys[ind]] === val){
            res.push(keys[ind]);
         }else if(typeof obj[keys[ind]] === 'object' &&
         !Array.isArray(obj[keys[ind]])){
            keysOf(val, obj[keys[ind]], res);
      };
   };
   return res;
};
Object.prototype.keysOf = keysOf;
console.log(obj.keysOf(23));

輸出

控制檯中的輸出為 −

['age']

更新於: 2020-08-31

91 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始吧
廣告