Array.indexOf vs in

Benchmark created on


Setup

var mixedArray = [1, 5, 2, 6, 15, 'str', 'foobar', 9, 65, '2'];
    var numArray = [1, 8, 6, 4, 9, 2, 18, 14, 18, 7];
    var strArray = ['hi', 'str', 'poke', 'spam', 'eggs', 'foo', 'bar', 'ham', 'baz', 'fake'];
    var bool = false;
    
    var badStr = 'fail';
    var badNum = 3;
    
    var getNext = (function() {
      var i = 0;
      return function(array, isStr) {
        switch (isStr) {
          case 0:
            return (i < 10) ? array[i++] : i = 0, badNum;
          case 1:
            return (i < 10) ? array[i++] : i = 0, badStr;
          case 2:
            if (i < 10) return array[i++];
            if (i === 10) return i++, badStr;
            return i = 0, badNum;
        }
      };
    })();

Test runner

Ready to run.

Testing in
TestOps/sec
Array.indexOf (mixed types)
bool = mixedArray.indexOf(getNext(mixedArray, 2)) !== -1;
ready
in operator (mixed types)
bool = getNext(mixedArray, 2) in mixedArray;
ready
Array.indexOf (strings only)
bool = strArray.indexOf(getNext(strArray, 1)) !== -1;
ready
in operator (strings only)
bool = getNext(strArray, 1) in strArray;
ready
Array.indexOf (numbers only)
bool = numArray.indexOf(getNext(numArray, 0)) !== -1;
ready
in operator (numbers only)
bool = getNext(numArray, 0) in numArray;
ready

Revisions

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