我有一个这样的物体
const obj = {a: 123, b: 'text', c: [1,2,3]}
我将其用于路由参数,但是c
可以是一个空数组,我不必处理a和b,因为它们肯定会有价值。我是否需要从c
中手动省略obj
?只能{a: 123, b: 'text'}
吗?
如果值未定义,是否有任何方法无需手动从对象中忽略属性?
答案 0 :(得分:1)
如果您使用的是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);
答案 1 :(得分:0)
如果您不确定最后一个参数
只做一个条件语句
const obj = {a: 123, b: 'text', c: [1,2,3]}
var AnotherObj = obj
if (AnotherObj.c == undefined)
delete AnotherObj.c
如果obj.c被定义,一切都会很好
否则它将从对象中删除第三个参数