2015-04-07 25 views
-1

之間的性能差異鑑於這兩個片段,這將是更有效的(考慮到了約20000點的數據集):Lodash:在_.filter和_.each

_.each片段:

var someIds = getIds(); //someIds is an array of ids in data 
var resultEach = []; 
_.each(data, function(dataItem, index){ 
    if (someIds.indexOf(dataItem.id) != -1){ 
     resultEach.push(dataItem); 
    } 
}); 

_.filter片段:

var someIds = getIds(); //someIds is an array of ids in data 
var resultEach = _.filter(data, function (dataItem) { 
    return someIds.indexOf(dataItem.id) != -1; 
}); 

我跑這個測試:http://jsperf.com/filter-vs-each-lodash 看來,過濾器是有點快日一個_each ... 這是另一個更復雜的例子: http://jsperf.com/complex-filter-vs-each-lodash

你知道什麼是差異的根源?

+2

你爲什麼不試試jsperf並找出自己的? – Andy

+2

https://jsperf.com/ – epascarello

+0

看看他們的來源,盧克! – Bergi

回答

0

他們都在做基本相同的事情。兩個函數都將使用相同風格的while循環來遍歷集合。從性能角度來看,你正在比較蘋果和蘋果。從功能角度來看,filter()更簡潔,更適合手頭的任務。