我有一个类似于以下的Javascript对象:
var my_object = { a:undefined, b:2, c:4, d:undefined };
如何删除所有未定义的属性?假属性应该保留。
我有一个类似于以下的Javascript对象:
var my_object = { a:undefined, b:2, c:4, d:undefined };
如何删除所有未定义的属性?假属性应该保留。
我遇到了一个类似的问题,需要从一个对象中(深度)移除undefined
,我发现如果你可以将普通对象转换为JSON格式并使用它,那么一个快速而简单的辅助函数看起来会像这样:
function stripUndefined(obj) {
return JSON.parse(JSON.stringify(obj));
}
使用最短的方式(lodash v4)删除所有假值,包括null
和undefined
:
_.pickBy(my_object)
_(my_object)
.pairs()
.reject(function(item) {
return _.isUndefined(item[1]) ||
_.isNull(item[1]);
})
.zipObject()
.value()
pairs()函数将输入对象转换为键值数组的数组。这样做是为了更容易使用reject()来消除undefined
和null
值。然后,您将剩下未被拒绝的键值对作为zipObject()的输入,该函数会为您重建对象。
_.isNil
方法,可以同时检查 undefined
和 null
。 - Tim Baas考虑到 undefined == null
,我们可以这样写:
let collection = {
a: undefined,
b: 2,
c: 4,
d: null,
}
console.log(_.omit(collection, it => it == null))
// -> { b: 2, c: 4 }
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中正在删除omit功能,因此另一种选择是使用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}
omitNullish({ a: null, b: 1, c: undefined, d: false, e: 0 });```
也许我错过了什么或误解了...如果我错了,请纠正我。谢谢
- Iulian PinzarupickBy
的函数式编程变体。这可能是您遇到此错误的原因。有关更多信息,您可以阅读有关'lodash/fp'的更多内容:https://github.com/lodash/lodash/wiki/FP-Guide - manish我喜欢使用_.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+remove+undefined+values+from+object
如何使用 Lodash 删除 JavaScript 对象中的 undefined 值?
// 例子对象
let obj = {
'name': 'John',
'age': 30,
'city': undefined,
'country': null
};
// 过滤 undefined 和 null 值
_.pickBy(obj, _.identity);
// 移除 undefined 和 null 值
_.omitBy(obj, _.isNil);
您可以使用 Lodash 来删除 null 和 undefined 对象,但是您需要知道要使用哪种 Lodash 方法。许多开发人员使用 isNil 来删除 Null 和 undefined 对象,但是此函数不会删除空对象 ('')。
您可以使用 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);
var my_object = { a:undefined, b:2, c:4, d:undefined, e:null };
var passedKeys = _.reject(Object.keys(my_object), function(key){ return _.isUndefined(my_object[key]) || _.isNull(my_object[key]) })
newObject = {};
_.each(passedKeys, function(key){
newObject[key] = my_object[key];
});
var my_object = { a:undefined, b:2, c:4, d:undefined };
var new_object = {};
Object.keys(my_object).forEach(function(key){
if (typeof my_object[key] != 'undefined' && my_object[key]!=null){
new_object[key] = my_object[key];
}
});