我想返回一个没有值,空或null的对象中的所有元素。 (即)
{
firstname: "John"
middlename: null
lastname: "Mayer"
age: ""
gender: "Male"
}
我想返回对象中的中间名和年龄。 请帮我。谢谢。
答案 0 :(得分:4)
迭代条目并过滤那些值为null / undefined / empty string:
的属性
const obj = { firstname: "John", middlename: null, lastname: "Mayer", age: "", gender: "Male" };
const emptyishProperties = Object.entries(obj)
.filter(([, val]) => val === null || val === undefined || val === '')
.map(([key]) => key);
console.log(emptyishProperties);
如果还可以包含值为0
的那些,则可以将过滤器简化为
.filter(([, val]) => !val)
答案 1 :(得分:4)
您可以使用Object.keys
将对象转换为数组,使用filter
过滤数据。
注意:这将包括所有falsey值。像0,未定义等
let obj = {
firstname: "John",
middlename: null,
lastname: "Mayer",
age: "",
gender: "Male"
};
let result = Object.keys(obj).filter(o => !obj[o]);
console.log(result);
如果您只想包含空字符串和null,则可以:
let obj = {
firstname: "John",
middlename: null,
lastname: "Mayer",
age: "",
gender: "Male"
};
let result = Object.keys(obj).filter(o => obj[o] === '' || obj[o] === null);
console.log(result);
答案 2 :(得分:4)
假设您的请求对象位于名为obj的变量中。然后你可以这样做:
Object.keys(obj).filter(key => obj[key] === null || obj[key] === undefined || obj[key] === "")
Object.keys将获取对象的所有键。然后,您将在对象键上运行过滤器功能以查找所需的项目。
现在有三个null,undefined和空字符串的条件。您可以根据需要添加更多内容。
答案 3 :(得分:4)
for (var property in obj ) {
if (obj.hasOwnProperty(property)) {
if (!obj[property]){
console.log(property); // This is what you're looking for, OR 'obj[property]' if you're after the values
}
}
}
然后,您可以使用匹配属性来创建自己的对象。您可以使用它来满足您的要求,而不是将其记录到控制台。