我有一个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属性应该保留。
当前回答
你可以使用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 }
其他回答
var my_object = { a:undefined, b:2, c:4, d:undefined };
var newObject = _.reject(my_collection, function(val){ return _.isUndefined(val) })
//--> newCollection = { b: 2, c: 4 }
考虑到undefined == null,我们可以这样写:
let collection = {
a: undefined,
b: 2,
c: 4,
d: null,
}
console.log(_.omit(collection, it => it == null))
// -> { b: 2, c: 4 }
JSBin例子
正确答案是:
_.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil)
结果是:
{b: 1, d: false}
其他人给出的另一种说法:
_.pickBy({ a: null, b: 1, c: undefined, d: false }, _.identity);
也将删除这里不需要的假值。
如果使用lodash,可以使用_.compact(array)从数组中删除所有错误值。
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]
https://lodash.com/docs/4.17.4#compact
默认情况下,pickBy使用identity:
_.pickBy({ a: null, b: 1, c: undefined, d: false });