繁体   English   中英

如何从对象中删除“未定义”值

[英]How to remove `undefined` value from an object

我有一个这样的对象

const obj = {a: 123, b: 'text', c: [1,2,3]}

我将它用于路由参数,但c可以是一个空数组,我不必处理 a 和 b 因为它们肯定会有值。 我是否必须从obj手动省略c 让它只有{a: 123, b: 'text'}吗?

如果值未定义,有什么方法我不必手动省略对象中的属性?

如果您使用lodash ,则可以使用omitBy

_.omitBy({a: 123, b: 'text', c: undefined}, _.isUndefined)

此外,您可以通过链组合许多条件

_({a:123,b:'text',c:undefined,d:null})
          .omitBy(_.isUndefined)
          .omitBy(_.isNull).value();

或者

您可以引入一个函数来帮助您省略每个对象的未定义值

 const obj = {a: 123, b: 'text', c: undefined}; const omitObj = obj => Object.keys(obj).reduce((acc, key) => { if (obj[key] === undefined) { return acc; } acc[key] = obj[key]; return acc; }, {}) const newObj = omitObj(obj); console.log(newObj);

如果您不确定最后一个参数

只做一个条件语句

const obj = {a: 123, b: 'text', c: [1,2,3]}

var AnotherObj = obj
if (AnotherObj.c == undefined)
    delete AnotherObj.c

如果定义了 obj.c 一切都会好的

否则它将从对象中删除第三个参数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM