是否可以結合Underscore的過濾器和地圖?我目前有兩個獨立的函數調用,但我想知道是否可以通過以某種方式將它們組合成單個調用來提高它們的效率。如何通過下劃線的地圖和過濾器實現最大效率?
基本上我有一個國家名稱數組 - 我想使用正則表達式過濾它們,然後將過濾的結果映射到DataItem對象的數組。這是我目前的代碼:
var filteredData = _.filter(allCountries, function(n, i){
var re = RegExp("^" + searchString, "i");
if (re.exec(n['country'].toLowerCase()) !== null) {
return true;
}
});
var mappedData = _.map(filteredData, function(n, i){
return new DataItem(i, n['name'], n['budget']);
});
提高效率的任何其他技巧也將受到感謝。
連鎖是每個人更喜歡的 – 2013-10-03 14:19:36
@itcouldevenbeaboat:可以,我不會使用下劃線那麼多......在這種特殊情況下,每個'似乎都更具可讀性。 – georg 2013-10-03 14:36:21
這不好,因爲現在你已經引入了不必要的,可變的結果變量。有人可能會說,在這種情況下你可能會使用'for'循環。 '鏈'是最好的選擇。 – spinningarrow 2015-04-14 16:57:15