Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm kiếm đối tượng theo giá trị trong JavaScript

Giả sử chúng ta có một đối tượng như thế này -

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,
   }]
};

Ở đây nó chỉ được lồng vào một cấp độ, nhưng tổ cũng có thể sâu hơn. Chúng tôi bắt buộc phải viết một hàm Đối tượng Object.prototype.keysOf () nhận một giá trị và trả về một mảng trong số tất cả các khóa có giá trị được chỉ định trong đối số.

Vì vậy, bây giờ chúng ta hãy viết mã cho chức năng này -

Ví dụ

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

['age']