我有一个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属性应该保留。
当前回答
如果您不想删除假值。这里有一个例子:
obj = {
"a": null,
"c": undefined,
"d": "a",
"e": false,
"f": true
}
_.pickBy(obj, x => x === false || x)
> {
"d": "a",
"e": false,
"f": true
}
其他回答
我遇到了一个类似的问题,从一个对象中删除undefined(深度),并发现如果你可以转换你的普通旧对象并使用JSON,一个快速而肮脏的帮助函数将如下所示:
function stripUndefined(obj) {
return JSON.parse(JSON.stringify(obj));
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Description
"...如果在转换过程中遇到未定义的函数或符号,它要么被省略(当它在对象中找到时),要么被删除为null(当它在数组中找到时)。
以下是我采用的lodash方法:
_(my_object)
.pairs()
.reject(function(item) {
return _.isUndefined(item[1]) ||
_.isNull(item[1]);
})
.zipObject()
.value()
函数的作用是:将输入对象转换为键/值数组数组。这样做是为了更容易使用reject()来消除未定义值和空值。之后,剩下的是没有被拒绝的对,这些是zipObject()的输入,它为您重建对象。
为了完成其他答案,在lodash 4中只忽略undefined和null(而不是像false这样的属性),你可以在_.pickBy中使用谓词:
_。pickBy(obj, v !== null && v !== undefined)
例子如下: Const obj = {a: undefined, b: 123, c: true, d: false, e: null}; const filteredObject = _。pickBy(obj, v => v !== null && v !== undefined); console.log = (obj) => document.write(JSON. log)stringify(filteredObject, null, 2)); console.log (filteredObject); < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js " > < /脚本>
你也可以使用Object。使用Array.prototype.filter。
const omitNullish = (object) =>
Object.fromEntries(
Object.entries(object).filter(([, value]) => value != null)
)
omitNullish({ a: null, b: 1, c: undefined, d: false, e: 0 }) // { b: 1, d: false, e: 0}
如果你想使用lodash,他们从v5中删除了省略,所以另一种选择是使用fp/pickBy以及isNil和negate。
import pickBy from 'lodash/fp/pickBy'
import isNil from 'lodash/isNil';
import negate from 'lodash/negate';
const omitNullish = pickBy(negate(isNil))
omitNullish({ a: null, b: 1, c: undefined, d: false, e: 0 }) // { b: 1, d: false, e: 0}
你可以使用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 }