首页 > web前端 > js教程 > 如何从 JavaScript 对象中删除 Null 和未定义的属性?

如何从 JavaScript 对象中删除 Null 和未定义的属性?

Barbara Streisand
发布: 2024-11-27 11:39:11
原创
966 人浏览过

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

从 Javascript 中的对象中删除空白属性

使用 JavaScript 对象时,可能需要删除未定义或 null 的属性。这可以帮助清理数据、删除不必要的字段或准备存储对象。根据所使用的 JavaScript 版本,有多种方法可以完成此任务。

ES10/ES2019

在 ES10/ES2019 中,最直接的方法是使用Object.fromEntries() 方法创建一个仅包含非空白的新对象属性:

let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
登录后复制

也可以写成函数:

function removeEmpty(obj) {
  return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
}
登录后复制

对于嵌套对象,可以使用递归函数:

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

中ES6/ES2015,可以使用以下一行,但请注意,它会改变原始对象而不是创建一个新对象:

Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);
登录后复制

或者,以下单个声明将创建一个新对象而不发生改变原文:

let o = Object.keys(obj)
  .filter((k) => obj[k] != null)
  .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});
登录后复制

这可以写成一个函数well:

function removeEmpty(obj) {
  return Object.entries(obj)
    .filter(([_, v]) => v != null)
    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
}
登录后复制

对于嵌套对象,可以使用以下递归函数:

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

在 ES5/ ES2009,代码比较多详细:

function removeEmpty(obj) {
  return Object.keys(obj)
    .filter(function (k) {
      return obj[k] != null;
    })
    .reduce(function (acc, k) {
      acc[k] = obj[k];
      return acc;
    }, {});
}
登录后复制

这也可以用命令式风格编写:

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;
}
登录后复制

最后,用函数式风格编写的递归版本:

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;
    }, {});
}
登录后复制

通过应用这些技术,您可以有效地从不同版本的 JavaScript 中的对象中删除空白属性,确保您的数据干净并准备好进一步处理或存储。

以上是如何从 JavaScript 对象中删除 Null 和未定义的属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板