in_array vs. $.inArray vs. indexOf()

JavaScript performance comparison

Test case created by Benni

Preparation code

<script src="//"></script>
Benchmark.prototype.setup = function() {
    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;
    var arr = [1, 2, 3, 4, 5, "test", "", undefined, null, {}, true];

Preparation code output

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
$.inArray(5, arr);
$.inArray(50, arr);
in_array(5, arr);
in_array(50, arr);

Compare results of other browsers


You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

1 comment

PH commented :

Since this is a speed test you should optimize the code and avoid using slow programming practises.

In the for loop you have the array length checked on every iteration, which is slow. Instead you should store the array length in a variable. This way the array length is only checked once making the loop faster and then for loop only needs to make the comparison.

Like this: var len = arr.length; and then: for (var p = 0; p < len; p++)

Add a comment