Array Duplicate Find (v2)

Revision 2 of this benchmark created by LJHarb on


Setup

var arr = [1, 2, 4, 4, 3, 3, 1, 5, 3];
    
    var dupIndexCheck = function() {
      var dupes = [];
    
      for (var i = 0, len = arr.length; i < len; i++) {
        var val = arr[i];
        if (dupes.indexOf(val) === -1 && arr.indexOf(val) !== arr.lastIndexOf(val)) {
          dupes.push(val);
        }
      }
    
      return dupes;
    }
    
    var dupOccurCount = function() {
      var seen = {};
      var dupes = [];
    
      for (var i = 0, len = arr.length; i < len; i++) {
        seen[arr[i]] = seen[arr[i]] ? seen[arr[i]] + 1 : 1;
      }
    
      for (var item in seen) {
        if (seen.hasOwnProperty(item) && seen[item] > 1) {
          dupes.push(item);
        }
      }
    
      return dupes;
    }
    
    var dupOccurCountES5 = function () {
      var seen = {};
      var dupes = [];
    
      for (var i = 0, len = arr.length; i < len; i++) {
        seen[arr[i]] = seen[arr[i]] ? seen[arr[i]] + 1 : 1;
      }
    
      return Object.keys(seen).reduce(function (dupes, item) {
        if (seen[item] > 1) {
          dupes.push(item);
        }
        return dupes;
      }, []);
    };

Test runner

Ready to run.

Testing in
TestOps/sec
IndexOf
dupIndexCheck();
ready
countOccur
dupOccurCount();
ready
countOccur ES5
dupOccurCountES5();
ready

Revisions

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