Alih Keluar Atribut Kosong daripada Objek dalam Javascript
Apabila bekerja dengan objek JavaScript, mungkin perlu mengalih keluar atribut yang tidak ditentukan atau batal . Ini boleh membantu membersihkan data, mengalih keluar medan yang tidak diperlukan atau menyediakan objek untuk storan. Terdapat beberapa cara untuk menyelesaikan tugasan ini bergantung pada versi JavaScript yang digunakan.
ES10/ES2019
Dalam ES10/ES2019, pendekatan yang paling mudah ialah menggunakan kaedah Object.fromEntries() untuk mencipta objek baharu yang mengandungi hanya yang bukan kosong atribut:
let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
Ini juga boleh ditulis sebagai fungsi:
function removeEmpty(obj) { return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null)); }
Untuk objek bersarang, fungsi rekursif boleh digunakan:
function removeEmpty(obj) { return Object.fromEntries( Object.entries(obj) .filter(([_, v]) => v != null) .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v]) ); }
ES6/ES2015
Dalam ES6/ES2015, perkara berikut one-liner boleh digunakan, tetapi ambil perhatian bahawa ia mengubah objek asal dan bukannya mencipta objek baharu:
Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);
Sebagai alternatif, pengisytiharan tunggal berikut akan mencipta objek baharu tanpa mengubah objek asal:
let o = Object.keys(obj) .filter((k) => obj[k] != null) .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});
Ini boleh ditulis sebagai fungsi juga:
function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}); }
Untuk objek bersarang, fungsi rekursif berikut boleh digunakan:
function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce( (acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmpty(v) : v }), {} ); }
ES5/ES2009
Dalam ES5/ES2009, kod lebih bertele-tele:
function removeEmpty(obj) { return Object.keys(obj) .filter(function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = obj[k]; return acc; }, {}); }
Ini boleh ditulis dalam gaya imperatif juga:
function removeEmpty(obj) { const newObj = {}; Object.keys(obj).forEach(function (k) { if (obj[k] && typeof obj[k] === "object") { newObj[k] = removeEmpty(obj[k]); } else if (obj[k] != null) { newObj[k] = obj[k]; } }); return newObj; }
Akhir sekali, versi rekursif yang ditulis dalam gaya berfungsi:
function removeEmpty(obj) { return Object.keys(obj) .filter(function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = typeof obj[k] === "object" ? removeEmpty(obj[k]) : obj[k]; return acc; }, {}); }
Dengan menggunakan teknik ini, anda boleh mengalih keluar atribut kosong dengan berkesan daripada objek dalam versi JavaScript yang berbeza, memastikan data anda bersih dan sedia untuk pemprosesan atau penyimpanan selanjutnya .
Atas ialah kandungan terperinci Bagaimana untuk membuang Atribut Null dan Tidak Ditakrifkan daripada Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!