Merge two arrays keeping only unique values (v10)

Revision 10 of this benchmark created on


Description

Github Question Here

Preparation HTML

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

Setup

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];
    var array3 = [];

Test runner

Ready to run.

Testing in
TestOps/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));
ready
Filter (Other option) http://stackoverflow.com/a/24179672/259809
var c = array1.concat(array2.filter(function(i) {
  return array1.indexOf(i) == -1;
}));
ready
While Loop (My Answer)
var arr = array1.concat(array2),
  len = arr.length;

while (len--) {
  var itm = arr[len];
  if (array3.indexOf(itm) === -1) {
    array3.unshift(itm);
  }
}
ready
lodash/_ (Second Highest Rated) http://stackoverflow.com/a/10499519/259809
array3 = _.union(array1, array2);
ready
hash
var hash = {};
for(var i=0; i<array1.length; i++){
  hash[array1[i]] = 1;
}
for(var i=0; i<array2.length; i++){
  hash[array2[i]] = 1;
}
array3 = Object.keys(hash)
ready

Revisions

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