Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การค้นหาออบเจ็กต์ตามค่าใน 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']