Home > Web Front-end > JS Tutorial > How to Remove Null and Undefined Attributes from a JavaScript Object?

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

Barbara Streisand
Release: 2024-11-27 11:39:11
Original
967 people have browsed it

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

Remove Blank Attributes from an Object in Javascript

When working with JavaScript objects, it may be necessary to remove attributes that are undefined or null. This can help to clean up data, remove unnecessary fields, or prepare objects for storage. There are several ways to accomplish this task depending on the version of JavaScript being used.

ES10/ES2019

In ES10/ES2019, the most straightforward approach is to use the Object.fromEntries() method to create a new object containing only the non-blank attributes:

let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
Copy after login

This can also be written as a function:

function removeEmpty(obj) {
  return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
}
Copy after login

For nested objects, a recursive function can be used:

function removeEmpty(obj) {
  return Object.fromEntries(
    Object.entries(obj)
      .filter(([_, v]) => v != null)
      .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v])
  );
}
Copy after login

ES6/ES2015

In ES6/ES2015, the following one-liner can be used, but note that it mutates the original object rather than creating a new one:

Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);
Copy after login

Alternatively, the following single declaration will create a new object without mutating the original:

let o = Object.keys(obj)
  .filter((k) => obj[k] != null)
  .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});
Copy after login

This can be written as a function as well:

function removeEmpty(obj) {
  return Object.entries(obj)
    .filter(([_, v]) => v != null)
    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
}
Copy after login

For nested objects, the following recursive function can be used:

function removeEmpty(obj) {
  return Object.entries(obj)
    .filter(([_, v]) => v != null)
    .reduce(
      (acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmpty(v) : v }),
      {}
    );
}
Copy after login

ES5/ES2009

In ES5/ES2009, the code is more verbose:

function removeEmpty(obj) {
  return Object.keys(obj)
    .filter(function (k) {
      return obj[k] != null;
    })
    .reduce(function (acc, k) {
      acc[k] = obj[k];
      return acc;
    }, {});
}
Copy after login

This can be written in an imperative style as well:

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;
}
Copy after login

Finally, a recursive version written in a functional style:

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;
    }, {});
}
Copy after login

By applying these techniques, you can effectively remove blank attributes from an object in different versions of JavaScript, ensuring that your data is clean and ready for further processing or storage.

The above is the detailed content of How to Remove Null and Undefined Attributes from a JavaScript Object?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template