อ็อบเจ็กต์ที่มี nested empty objects:
const details = {
name: 'John',
age: {},
marks: { marks: {} }
}ใช้ forEach(), typeof, delete แบบ recursive
ตัวอย่างโค้ด
const details = {
name: 'John',
age: {},
marks: { marks: {} }
};
function removeAllBlankObjects(detailsObj) {
Object.keys(detailsObj).forEach(k => {
if (detailsObj[k] && typeof detailsObj[k] === 'object' && removeAllBlankObjects(detailsObj[k]) === null) {
delete detailsObj[k];
}
});
if (!Object.keys(detailsObj).length) {
return null;
}
}
removeAllBlankObjects(details);
console.log(details);รันด้วยคำสั่ง:
node fileName.js
ชื่อไฟล์: demo283.js
ผลลัพธ์
PS C:\Users\Amit\javascript-code> node demo283.js
{ name: 'John' }คำอธิบาย: ฟังก์ชัน recursive ตรวจสอบทุก key ถ้าค่าเป็นอ็อบเจ็กต์และหลัง recursive แล้วคืน null (ว่างเปล่า) ให้ delete key นั้นออก คืน null ถ้าอ็อบเจ็กต์ว่างเปล่าทั้งหมด