Unique array

Benchmark created by Buzut on


Setup

function createTestArray (iterations) {
      var arr = [];
      var i = 0;
  
      for (loop = 0; loop < iterations; loop++) {
          var random = Math.random();
          random = random.toString();
          random = random.substr(2);
  
          arr.push(random);
  
          // 1/3 of times, add a duplicate element
          if (i++ === 3) {
              // reset i
              i = 0;
              arr.push(random);
          }
      }
      return arr;
  }
  
  var testArray = createTestArray(500);

Test runner

Ready to run.

Testing in
TestOps/sec
Hash sieving
var obj = {};
var deduped = [];
testArray.forEach(function (el) {
    obj[el] = el;
});

for (var propt in obj) {
    deduped.push(obj[propt]);
}
ready
IndexOf
var deduped = [];
testArray.forEach(function (el) {
    if (deduped.indexOf(el) === -1) {
        deduped.push(el);
    }
});
ready
array.filter
var string = {};
var deduped = testArray.filter(function(item) {
    // do JSON.stringify for ObjectId
    return string.hasOwnProperty(JSON.stringify(item)) ? false : (string[JSON.stringify(item)] = true);
});
ready

Revisions

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