Array Contains: recursion vs .every()

JavaScript performance comparison

Test case created by ThinkingStiff and last updated

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    Array.prototype.containsArray = function ( array /*, index, last*/ ) {
       
        if( arguments[1] ) {
            var index = arguments[1], last = arguments[2];
        } else {
            var index = 0, last = 0; this.sort(); array.sort();
        };
       
        return index == array.length
            || ( last = this.indexOf( array[index], last ) ) > -1
            && this.containsArray( array, ++index, ++last );
                 
    };
   
   
    function containsArray ( arr1, arr2 ) {
   
    return arr2.every(function (val) {
        var numIn1 = arr1.filter(function(el) { return el === val;  }).length;
        var numIn2 = arr2.filter(function(el) { return el === val;  }).length;
        return numIn1 === numIn2;  
    });
   
    };
   
   
};
</script>

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
recursion
var arr1 = [1, 2, 3, 4], arr2 = [1, 2], 
result = arr1.containsArray( arr2 );
arr1 = [1, 2, 3, 4]; arr2 = [1, 2, 5];
result = arr1.containsArray( arr2 );
arr1 = [1, 2, 3]; arr2 = [1, 2, 3, 3];
result = arr1.containsArray( arr2 );
 
pending…
.every()
var arr1 = [1, 2, 3, 4], arr2 = [1, 2], 
result = containsArray( arr1, arr2 );
arr1 = [1, 2, 3, 4]; arr2 = [1, 2, 5];
result = containsArray( arr1, arr2 );
arr1 = [1, 2, 3]; arr2 = [1, 2, 3, 3];
result = containsArray( arr1, arr2 );
 
pending…

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

Compare results of other browsers

0 comments

Add a comment