2016-03-05 146 views
2
$("#submit").click(function(event) { 
     event.preventDefault() 

     var data = [{"date_range": $("#date").val()}, 
        {"day_of_week": $("#day_of_week").find('option:selected').text()}, 
        {"call_volume": $("#call_volume").find('option:selected').text()}, 
        {"number_of_calls": $("#number_of_calls").val()}] 

     var info = data.filter(function(item) {return $.isEmptyObject(item)}) 
     alert(info) 
    }) 

上面的代碼有什麼問題?

基本上我試圖做的是過濾數據數組中不爲空的對象。

我的意思是通過filter的東西的標準是它應該是真的嗎?

那麼爲什麼上面的代碼不工作?

警報信息始終是,儘管數據陣列中的大多數對象空不空

+0

哪裏空的對象? – elclanrs

+0

你的數組沒有空的對象;你的過濾器只保留*空對象 - 所以是的,'info'將永遠是一個空的數組。 – nnnnnn

回答

1

嘗試否定的$.isEmptyObject(object)結果,

var info = data.filter(function(item) {return !$.isEmptyObject(item)}); 

因爲,如果傳遞的對象不是空單,那麼isEmptyObject將返回false,並且您將返回filtercallBack。所以數組中的所有元素都被忽略。

這是怎麼Array.prototype.filter作品,

var keepIt = true; 
var sample = [1,2,3,4].filter(function(){ 
       return keepIt; //It will be true always, 
          //so all the items will be preserved. 
          //If it is false, then all the elements will be ignored. 
      }); 
+1

哇這是因爲是空的對象檢查對象是否爲空,然後返回false如果它不是fml:/ 但它仍然是奇怪的。其中一個對象是空的,但沒有被返回。無論如何,這有助於謝謝 – halcyonjuly7

+0

「isempty」檢查它是否爲空,如果它是空的,返回「是」,即它告訴你它是空的 - 這是如何「fml」或奇怪?你爲什麼會期待如果問它是空的還是空的,你會回到「否」? –

+0

@ freedomn -m我想這就是當你在上午1點編碼8小時後編碼時會發生什麼。說真的,我很喜歡wtf,我在想 – halcyonjuly7