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

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

Patricia Arquette
Patricia Arquette原创
2024-11-28 04:31:13335浏览

How Can I Remove Null or Undefined Attributes from a JavaScript Object?

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

在 JavaScript 中,对象可以具有未定义或 null 的属性,这可能会使代码变得混乱并使工作变得更加困难。为了解决这个问题,我们可以使用各种技术从对象中删除这些空白属性。

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

  • 变异单行:Object.keys(obj).forEach((k) => obj [k] == null && 删除 obj[k]);
  • A非变异版本: let o = Object.keys(obj) .filter((k) => obj[k] != null) .reduce((a, k) => ({ ...a, [ k]: obj[k] }), {});
  • 与上面类似,写成函数: 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

  • 函数式非递归版本: function removeEmpty(obj) { return Object.keys(obj) .filter (function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = obj[k]; 返回 acc; }
  • 递归函数版本: 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]; ACC; }, {}); }

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn