Merge two arrays keeping only unique values

JavaScript performance comparison

Revision 18 of this test case created by doldt

Preparation code

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>

      
<script>
Benchmark.prototype.setup = function() {
  var array1 = ["Vijendra", "Singh", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var array2 = ["Singh", "Shakya", 2, 4, 6, 8, 10, 12, 14, 16, 18, 20];

};
</script>

Preparation code output

Test runner

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

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Top Answer http://stackoverflow.com/a/1584377/259809
function arrayUnique(array) {
  var a = array.concat();
  for (var i = 0; i < a.length; ++i) {
    for (var j = i + 1; j < a.length; ++j) {
      if (a[i] === a[j])
        a.splice(j--, 1);
    }
  }

  return a;
};

arrayUnique(array1.concat(array2));
pending…
Filter (Other option) http://stackoverflow.com/a/24179672/259809
var c = array1.concat(array2.filter(function(i) {
  return array1.indexOf(i) == -1;
}));
pending…
While Loop (My Answer)
var array3 = [];
var arr = array1.concat(array2),
  len = arr.length;

while (len--) {
  var itm = arr[len];
  if (array3.indexOf(itm) === -1) {
    array3.unshift(itm);
  }
}
pending…
lodash/_ (Second Highest Rated) http://stackoverflow.com/a/10499519/259809
array3 = _.union(array1, array2);
pending…

Compare results of other browsers

Revisions

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

0 Comments