unique test (v3)

Revision 3 of this benchmark created on


Setup

var arr = [];
  for (var i = 0; i < 1000; i++) {
    arr.push(Math.floor((Math.random() * 10) + 1));
  }

Test runner

Ready to run.

Testing in
TestOps/sec
jquery
function unique(results) {
  var elem, duplicates = [],
    i = 1,
    j = 0;
  results.sort();

  for (;
    (elem = results[i]); i++) {
    if (elem === results[i - 1]) {
      j = duplicates.push(i);
    }
  }
  while (j--) {
    results.splice(duplicates[j], 1);
  }

  return results;
}

unique(arr);
ready
me
function unique1(results) {
  var elem, duplicates = [],
    i = 1,
    j = 0;
  results.sort();

  for (;
    (elem = results[i]); i++) {
    if (elem === results[i - 1]) {
      results.splice(i, 1);
      i -= 1;
    }
  }

  return results;
}

unique1(arr);
ready
me without sort
function unique(arr) {
  var newArr = [];

  while (arr.length) {
    var item = arr[arr.length - 1];
    arr.pop();

    if (!(~arr.indexOf(item))) {
      newArr.unshift(item);
    }
  }

  return newArr;
}

unique(arr)
ready
jquery2
function unique(results) {
  var elem, duplicates = [],
    i = 1,
    j = 0;
  results.sort();

  for (;
    (elem = results[i]); i++) {
    if (elem === results[i - 1]) {
      j = duplicates.push(i);
    }
  }
  while (j--) {
    results.splice(duplicates[j], 1);
  }

  return results;
}

unique(arr);
ready

Revisions

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