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

如何有效地从 JavaScript 对象中删除 null 和未定义的属性?

Linda Hamilton
发布: 2024-12-26 00:33:10
原创
718 人浏览过

How can I efficiently remove null and undefined attributes from JavaScript objects?

从 JavaScript 对象中删除空白属性

处理数据对象时,通常需要删除未定义或设置为 null 的属性。本文使用各种 JavaScript 版本和技术提供了此问题的解决方案。

ES10/ES2019 解决方案

带有 Object.fromEntries 的单行

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

使用对象的函数。 fromEntries 和递归

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 && delete obj[k]);
登录后复制

无变异的单声明

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 === 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];
      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 对象中删除 null 和未定义的属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

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