2017-07-11 67 views
1

在我的应用程序中,我有一个数据,它是对象数组。如果数组中的任何对象属性都是空的,那么数据不应该保存。考虑下面的示例数据,如何遍历该数组中的所有对象,并检查以下数据中的任何空的value.in第三对象具有空FNAME欢迎使用属性,如何找到这样如何在Javascript中检查对象数组中的空对象属性

var obj = [{fname:"name1",lname:"lname1"}, 
      {fname:"name2",lname:"name2"}, 
      {fname:"",lname:"name3"} 
      ]; 
+0

_“如果任何对象属性的任何元素的数组中的对象为空“_你能提供一个你想要描述的例子和预期的结果吗? – guest271314

+0

在你的例子中没有'null'作为它的值的属性 – Andreas

+0

@ guest271314 null意味着我将它作为一个空值引用。第三个对象fname属性是空的right.i想要找出这样的对象属性 – codegeek

回答

3

空对象属性您可以使用Object.values()获取对象中所有值的列表。您可以使用filter()来过滤阵列中的元素。结合这两者,你可以做这样的事情:

你也可以保留一个你不想要的所有值的数组,然后检查这些值是否存在于你正在过滤的对象值中。

var obj = [{fname:"name1",lname:"lname1"}, 
 
     {fname:"name2",lname:"name2"}, 
 
     {fname:"",lname:"name3"}, 
 
     {fname:null,lname:"name4"}]; 
 

 
var filterobj = obj.filter(function(o){ 
 
    var values = Object.values(o); 
 
    var arr2 = ["", null]; //array of values you don't want. 
 
    if(arr2.some(function (val) { return values.indexOf(val) >= 0; })) //checks if atleast one value of arr2 is in values. 
 
     return false; 
 
    else 
 
     return true; 
 
}); 
 

 
console.log(filterobj);

0

您可以使用Array.reduce的阵列减少到只具有非空fname

var obj = [{fname:"name1",lname:"lname1"}, 
 
     {fname:"name2",lname:"name2"}, 
 
     {fname:"",lname:"name3"}, 
 
     {fname:null,lname:"name4"}]; 
 

 
var goodNames = obj.reduce(function (notEmptyNames, name) { 
 
    if (name.fname) notEmptyNames.push(name); 
 
    return notEmptyNames; 
 
}, []); 
 

 
console.log(goodNames);

相关问题