I have the below object and I want to count the empty or null values in the object and update it in a property counter of that object.
E.g. I have this below object.
var userData = {
firstName: "Eric",
lastName: null,
age: "",
location : "San francisco",
country: "USA",
counter: 0
}
The result of iterating through this object would let us know that lastName and age is empty or null, so it should update counter: 2 indicating that 2 fields are empty.
obj userData = {
firstName: "Eric",
lastName: null,
age: "",
location : "San francisco",
country: "USA",
counter: 2
}
How can I achieve this?
Advertisement
Answer
You can filter through the values of the object using a Set to store all values considered empty.
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);We can use reduce instead of filter to minimize memory usage.
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).reduce((acc,curr) => acc + emptyValues.has(curr), 0);
console.log(userData);