1.使用 Object.entries()
方法来遍历对象的每个属性,并结合 Array.prototype.reduce()
方法进行过滤。
function filterNullUndefined(obj) {
return Object.entries(obj).reduce((acc, [key, value]) => {
if (value !== null && value !== undefined && value !=='') {
acc[key] = value;
}
return acc;
}, {});
}
const obj = {
a: 1,
b: null,
c: undefined,
d: "hello",
};
const filteredObj = filterNullUndefined(obj);
console.log(filteredObj);
//{ a: 1, d: "hello" }
如果您想过滤掉 JavaScript 对象中的非真值(例如 false、0、空字符串等)属性,并返回一个新的对象,您可以使用 Object.entries()
方法来遍历对象的每个属性,并结合 Array.prototype.reduce()
方法进行过滤。以下是一个示例函数,它可以过滤掉对象中的非真值属性,并返回一个新的对象:
function filterFalsyValues(obj) {
return Object.entries(obj).reduce((acc, [key, value]) => {
if (value) {
acc[key] = value;
}
return acc;
}, {});
}
2.使用 Lodash 库可以很方便地过滤掉 JavaScript 对象中的属性值为 undefined、null 和空字符串 “”。您可以使用 omitBy()
函数结合自定义谓词函数来完成这个任务。以下是一个示例代码:
const _ = require('lodash');
function filterFalsyValues(obj) {
return _.omitBy(obj, value => _.isUndefined(value) || _.isNull(value) || value === "");
}
通过调用 _.omitBy()
函数,我们可以传递一个对象和一个谓词函数。谓词函数用于判断属性值是否为 undefined、null 或空字符串 “”,返回 true 则表示需要被排除,因此这些属性将被过滤掉。