2016-07-06 62 views
1

我覺得自己像一個白癡,但我需要篩選我的數組,然後映射這些值,但多數民衆贊成(2N),這將是更有意義的做到這一切在O(N),但我找不到股票Array.prototype功能數組過濾器和地圖在同一時間?

array.filter(item => !!item.revenue).map(item => item.revenue) 

我總是可以寫我自己的方法,但它是最好用的優化Array.prototype者的表現,如果有一個

+0

粘貼兩個操作的代碼,我們將檢查如何以一種方式做到這一點,好嗎? – webdeb

+0

聽起來像你想另一種方法,如減少 – epascarello

+1

是否真的值得與一個額外的迭代交易可讀性? – zerkms

回答

6

如何Array.prototype.reduce()

arr.reduce((newArr, item) => { 
    if (!!item.revenue) { 
     newArr.push(item.revenue) 
    } 
    return newArr 
}, []); 
+0

dang,我看到了reduce,但是並沒有意識到你可以構造一個數組,只想到一個變量,謝謝 – neaumusic

+0

不利的一點是,與map不同,這不預先分配。因爲它不知道有多少物品會被過濾。 – Oriol

+2

@Oriol「劣勢」相比* *什麼*?只用'Array.prototype.map'就不能解決問題。 – zerkms