我有一个Javascript对象像:
var my_object = { a:undefined, b:2, c:4, d:undefined };
如何删除所有未定义的属性?False属性应该保留。
我有一个Javascript对象像:
var my_object = { a:undefined, b:2, c:4, d:undefined };
如何删除所有未定义的属性?False属性应该保留。
当前回答
你可以简单地用_连接_.省略()。isUndefined和_。isNull组合,并获得懒惰求值的结果。
Demo
var result = _(my_object).omit(_.isUndefined).omit(_.isNull).value();
2016年3月14日更新:
正如dylants在评论部分中提到的,您应该使用_.omitBy()函数,因为它使用谓词而不是属性。对于lodash 4.0.0及以上版本,您应该使用此选项。
DEMO
var result = _(my_object).omitBy(_.isUndefined).omitBy(_.isNull).value();
2016年6月1日更新:
正如Max Truxa所评论的,lodash已经提供了一个替代的_。isNil,检查null和undefined:
var result = _.omitBy(my_object, _.isNil);
其他回答
如果使用lodash,可以使用_.compact(array)从数组中删除所有错误值。
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]
https://lodash.com/docs/4.17.4#compact
从对象中删除未定义、空字符串和空字符串
_.omitBy(object, (v) => _.isUndefined(v) || _.isNull(v) || v === '');
我喜欢用_。pickBy,因为你可以完全控制你要删除的东西:
var person = {"name":"bill","age":21,"sex":undefined,"height":null};
var cleanPerson = _.pickBy(person, function(value, key) {
return !(value === undefined || value === null);
});
来源:https://www.codegrepper.com/?search_term=lodash +删除+未定义值+ + +对象
你可以使用lodash来删除null和未定义的对象,但你应该知道你需要使用什么lodash方法,许多开发人员使用isNil来删除null和未定义的对象,但这个函数不删除空对象(' ')
你可以使用isEmpty来删除Null, Undefined和
import pickBy from 'lodash/fp/pickBy'
import negate from 'lodash/negate';
import isEmpty from 'lodash/isEmpty';
const omitNullish = pickBy(negate(isEmpty));
addressObject = {
"a": null,
"c": undefined,
"d": "",
"e": "test1",
"f": "test2
}
const notNullObjects = omitNullish(addressObject);
console.log(notNullObjects);
你将拥有这个对象:{ “e”:“test1”, “f”:“test2 }
因为你们中的一些人可能已经想到了这个问题,想要明确地删除undefined,你可以使用:
Lodash方法的组合 _。_.isUndefined omitBy(对象) rundef包,它只删除未定义的属性 rundef(对象)
如果需要递归地删除未定义的属性,rundef包还有一个递归选项。
rundef(object, false, true);
有关详细信息,请参阅文档。