Maison > interface Web > js tutoriel > Comment supprimer les attributs nuls et non définis d'un objet JavaScript ?

Comment supprimer les attributs nuls et non définis d'un objet JavaScript ?

Barbara Streisand
Libérer: 2024-11-27 11:39:11
original
980 Les gens l'ont consulté

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

Supprimer les attributs vides d'un objet en Javascript

Lorsque vous travaillez avec des objets JavaScript, il peut être nécessaire de supprimer les attributs non définis ou nuls . Cela peut aider à nettoyer les données, à supprimer les champs inutiles ou à préparer les objets pour le stockage. Il existe plusieurs façons d'accomplir cette tâche en fonction de la version de JavaScript utilisée.

ES10/ES2019

Dans ES10/ES2019, l'approche la plus simple consiste à utiliser la méthode Object.fromEntries() pour créer un nouvel objet contenant uniquement les attributs non vides :

let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
Copier après la connexion

Ceci peut également s'écrire sous forme de fonction :

function removeEmpty(obj) {
  return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
}
Copier après la connexion

Pour les objets imbriqués, une fonction récursive peut être utilisée :

function removeEmpty(obj) {
  return Object.fromEntries(
    Object.entries(obj)
      .filter(([_, v]) => v != null)
      .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v])
  );
}
Copier après la connexion

ES6/ES2015

Dans ES6/ES2015, le one-liner suivant peut être utilisé, mais notez qu'il mute l'objet d'origine plutôt que de créer un nouveau one :

Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);
Copier après la connexion

Alternativement, la déclaration unique suivante créera un nouvel objet sans muter l'original :

let o = Object.keys(obj)
  .filter((k) => obj[k] != null)
  .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});
Copier après la connexion

Cela peut également être écrit sous forme de fonction :

function removeEmpty(obj) {
  return Object.entries(obj)
    .filter(([_, v]) => v != null)
    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
}
Copier après la connexion

Pour les objets imbriqués, la fonction récursive suivante peut être utilisé :

function removeEmpty(obj) {
  return Object.entries(obj)
    .filter(([_, v]) => v != null)
    .reduce(
      (acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmpty(v) : v }),
      {}
    );
}
Copier après la connexion

ES5/ES2009

Dans ES5/ES2009, le code est plus verbeux :

function removeEmpty(obj) {
  return Object.keys(obj)
    .filter(function (k) {
      return obj[k] != null;
    })
    .reduce(function (acc, k) {
      acc[k] = obj[k];
      return acc;
    }, {});
}
Copier après la connexion

Cela peut s'écrire dans un style impératif également :

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;
}
Copier après la connexion

Enfin, une version récursive écrite dans un style fonctionnel :

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;
    }, {});
}
Copier après la connexion

En appliquant ces techniques, vous pouvez supprimer efficacement les attributs vides d'un objet dans différentes versions de JavaScript, garantissant ainsi que vos données sont propres et prêtes pour un traitement ou un stockage ultérieur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal