สมมติว่าเรามีวัตถุเช่นนี้ −
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 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']