2017-10-11 10 views
1

刪除空:的JavaScript我有機能缺失被合併兩個數組這樣的對象

var sorting = data.genre.map((i) => data_info.find((o) => o.id === i)); 

在這個函數的問題是,如果它不能在data_info找到genre其添加null對象ARRA因此我的功能失敗了。
所以問題是:我怎樣才能在上面的單行刪除所有值爲空?

我從上面THR線輸出:

[{"id":1,"category":"Action"},{"id":2,"category":"Adventure"},null] 

,並需要得到這樣的:

[{"id":1,"category":"Action"},{"id":2,"category":"Adventure"}] 

我試着在上面添加&& data_info(o) !== null到行,但我的目標得到null無論如何。

+0

在'map'的輸出中添加一個'filter'。 'data.genre.map((i)=> data_info.find((o)=> o.id === i))。filter((i)=> return i!= null);' – gurvinder372

+0

map function對數組中的每個項應用該操作,並返回一個數組,其元素數與輸入數組中的元素數完全相同。 – ajaysinghdav10d

+0

[如何通過值從數組中刪除項目]可能的重複(https://stackoverflow.com/questions/3954438/how-to-remove-item-from-array-by-value) –

回答

2

變化.map.filter

var sorting = data.genre.filter((i) => data_info.find((o) => o.id === i) ? true : false); 
1

您可以通過傳遞迴調函數來使用filter方法。

var sorting = data.genre.map((i) => data_info.find((o) => o.id === i)).filter(function(item){ 
    return item!=null; 
}); 
1

您可以filtermap函數的結果,除去null

var sorting = data.genre.map((i) => data_info.find((o) => o.id === i)).filter(item => { 
    return item !== null; 
}); 

的過濾器()方法創建與通過 通過所提供的功能來實現的測試中所有元素的數組。

相關問題