Array.indexOf vs For loop (v27)

Revision 27 of this benchmark created on


Setup

var array1 = 
  [
    "value1",
    "value2",
    "value3",
    "value4",
    "value5",
    "value6",
    "value7",
    "value8",
    "value9",
    "value10",
    "value11",
    "value12",
    "value13",
    "value14",
    "value15",
    "value16",
    "value17",
    "value18",
    "value19",
    "value20"
  ];
  var array2 =
  [
    "value1",
    "value10",
    "value20"
  ];

Test runner

Ready to run.

Testing in
TestOps/sec
For loop without break
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];
  var result = false;

  for(var j = 0, len = array2.length; j < len; j++)
  {
    if(value === array2[j])
    {
       result = true;
    }
  }
}
ready
Array.indexOf()
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];
  var result = (array2.indexOf(value) !== -1);
}
ready
For_of loop
for (let value of array1) {
  let result = false;
  for (let value2 of array2) {
    if (value === value2) {
      result = true;
      break;
    }
  }
}
ready
reverse for loop
for(var i = array1.length; --i >= 0;)
{
  var value = array1[i];
  var result = false;

  for(var j = array2.length; --j >= 0;)
  {
    if(value === array2[j])
    {
       result = true;
       break;
    }
  }
}
ready
For loop
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];
  var result = false;

  for(var j = 0, len = array2.length; j < len; j++)
  {
    if(value === array2[j])
    {
       result = true;
       break;
    }
  }
}
ready
reverse while
var i = array1.length;
while(i--)
{
  var value = array1[i];
  var result = false;
  var j = array2.length;

  while(j--)
  {
    if(value === array2[j])
    {
       result = true;
       break;
    }
  }
}
ready

Revisions

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