Rumah >hujung hadapan web >tutorial js >Bagaimana untuk membuang Atribut Null dan Tidak Ditakrifkan daripada Objek JavaScript?

Bagaimana untuk membuang Atribut Null dan Tidak Ditakrifkan daripada Objek JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-11-27 11:39:111022semak imbas

How to Remove Null and Undefined Attributes from a JavaScript Object?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn