array filter: jQuery.each vs jQuery.grep vs for loop (v5)

Revision 5 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

Setup

var largeArray = ["element1", "element2", "element3", "element4", "element5", "element6", "element7", "element8", "element9", "element10", "element11", "element12", "element13", "element14", "element15", "element16", "element17", "element18", "element19", "element20", "element21", "element22", "element23", "element24", "element25", "element26", "element27", "element28", "element29", "element30", "element31", "element32", "element33", "element34", "element35", "element36", "element37", "element38", "element39", "element40", "element41", "element42", "element43", "element44", "element45", "element46", "element47", "element48", "element49", "element50", "element51", "element52", "element53", "element54", "element55", "element56", "element57", "element58", "element59", "element60", "element61", "element62", "element63", "element64", "element65", "element66", "element67", "element68", "element69", "element70", "element71", "element72", "element73", "element74", "element75", "element76", "element77", "element78", "element79", "element80", "element81", "element82", "element83", "element84", "element85", "element86", "element87", "element88", "element89", "element90", "element91", "element92", "element93", "element94", "element95", "element96", "element97", "element98", "element99", "element100"];
    
    var largeArray2;

Test runner

Ready to run.

Testing in
TestOps/sec
jQuery.grep
var result = jQuery.grep(largeArray, function(element) {
  return (element == 'element10' || element == 'element90');
});
ready
For loop
var length = largeArray.length,
  result = [],
  element;
for (var i = 0; i < length; i++) {
  element = largeArray[i];
  if (element == 'element10' || element == 'element90')
    result.push(element);
}
ready
jQuery.each
var result = [],
  element;
jQuery.each(largeArray, function(index, value) {
  if (element == 'element10' || element == 'element90')
    result.push(element);
});
ready
Array.filter
var result = largeArray.filter(function(element){
    return element == 'element10' || element == 'element90';
});
ready
For modify original array
var element;
largeArray2 = largeArray.slice();
for (var i = 0, len = largeArray2.length; i < len; i++) {
  element = largeArray2[i];
  if (element != 'element10' && element != 'element90'){
    largeArray2.splice(i,1);
    i--;
    len--;
  }
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.