in_array vs. $.inArray vs. indexOf() (v4)

Revision 4 of this benchmark created by Brian on


Preparation HTML

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

Setup

function in_array(item, arr) {
      if (!arr) {
        return false;
      } else {
        for (var p = 0; p < arr.length; p++) {
          if (item == arr[p]) {
            return true;
          }
        }
        return false;
      }
    }
    
    function in_array2(needle, haystack) {
      for (var key in haystack)
        if (haystack[key] == needle)
          return true;
    
      return false;
    }
    
    function indexOf(needle, haystack) {
      return haystack.indexOf(needle) > -1;
    }
    
    function indexOf2(needle, haystack) {
      return ~haystack.indexOf(needle);
    }
    
    /* as implemented in jTable */
    function indexOf3(elt, ary)
      {
        var len = this.length;
    
        var from = Number(arguments[1]) || 0;
        from = (from < 0)
             ? Math.ceil(from)
             : Math.floor(from);
        if (from < 0)
          from += len;
    
        for (; from < len; from++)
        {
          if (from in this &&
              ary[from] === elt)
            return from;
        }
        return -1;
      };
    
    
    var arr = [1, 2, 3, 4, 5, "test", "", undefined, null, {},
      true
    ];

Test runner

Ready to run.

Testing in
TestOps/sec
$.inArray
$.inArray(5, arr);
$.inArray(50, arr);
ready
in_array
in_array(5, arr);
in_array(50, arr);
ready
indexOf
indexOf(5, arr);
indexOf(50, arr);
ready
in_array2
in_array2(5, arr);
in_array2(50, arr);
ready
indexOf2
indexOf2(5, arr);
indexOf2(50, arr);
ready
indexOf3
indexOf3(5, arr);
indexOf3(50, arr);
ready

Revisions

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