问题描述
我有以下对象,并且我想计算对象中的空值或null
并在该对象的属性计数器中对其进行更新。
例如我有这个下面的对象。
var userData = {
firstName: "Eric",lastName: null,age: "",location : "San francisco",country: "USA",counter: 0
}
遍历此对象的结果将使我们知道lastName和age为空或为null,因此应更新计数器:2指示2个字段为空。
obj userData = {
firstName: "Eric",counter: 2
}
我该如何实现?
解决方法
您可以使用Set
过滤对象的值,以存储所有被认为是空的值。
const userData = {
firstName: "Eric",lastName: null,age: "",location : "San francisco",country: "USA",counter: 0
};
const emptyValues = new Set(["",null,undefined]);
userData.counter = Object.values(userData).filter(x => emptyValues.has(x)).length;
console.log(userData);
我们可以使用reduce
代替filter
来最大程度地减少内存使用。
const userData = {
firstName: "Eric",undefined]);
userData.counter = Object.values(userData).reduce((acc,curr) => acc + emptyValues.has(curr),0);
console.log(userData);
,
您可以使用函数Objec.values
访问对象的值,并使用函数Array.prototype.reduce
计算空值。
const userData = { firstName: "Eric",counter: 0},emptyValues = ["",null];
userData.counter = Object.values(userData).reduce((r,c) => r + emptyValues.includes(c),0);
console.log(userData);