查找没有值,空或null的对象的所有元素

时间:2018-05-31 05:49:06

标签: javascript

我想返回一个没有值,空或null的对象中的所有元素。 (即)

 {
   firstname: "John"
   middlename: null
   lastname:  "Mayer"
   age:       ""
   gender:    "Male"
 }

我想返回对象中的中间名和年龄。 请帮我。谢谢。

4 个答案:

答案 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
        } 
    }
}

然后,您可以使用匹配属性来创建自己的对象。您可以使用它来满足您的要求,而不是将其记录到控制台。