2017-07-11 102 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);

相關問題