Array Diff (v2)

Revision 2 of this benchmark created by Carlos Cabañeranero on


Test runner

Ready to run.

Testing in
TestOps/sec
First
//Quitar los repetidos
var arr1 = [5, 6, 3, 8, 9, 4, 1, 99, 100, 200, 500, 600, 300, 6, 80];
var arr2 = [5, 6, 3, 8, 9, 19, 99, 101, 200, 500, 591, 221, 500, 300];
var arr3 = new Array();
var time = {};

countRepetitions(arr1);
countRepetitions(arr2);

function countRepetitions(arr) {
  for (var i = arr.length - 1; i >= 0; i--) {
    var val = arr[i];
    //console.log(val);
    if (time[val]) {
      time[val]++;
    } else {
      time[val] = 1;
    }
  }
}

//console.log(':::.:::.::.')
//console.log(time);


for (var i = 0; i < arr1.length; i++) {
  var val = arr1[i];
  if (time[val] <= 1) {
    arr3.push(val);
  }
}
for (var i = 0; i < arr2.length; i++) {
  var val = arr2[i];
  if (time[val] <= 1) {
    arr3.push(val);
  }
}
//console.log('::.::...::');
console.log(arr3);
ready
Second
var arr1 = [5, 6, 3, 8, 9, 4, 1, 99, 100, 200, 500, 600, 300, 6, 80];
var arr2 = [5, 6, 3, 8, 9, 19, 99, 101, 200, 500, 591, 221, 500, 300];
var arrmix = arr1.concat(arr2);
var arr3 = new Array();
var time = {};

var countOccurrences = function(arr, value) {
  var len = arr.length;
  var occur = 0;
  for (var i = 0; i < len; i++) {
    if (arr[i] === value) {
      occur++;
    }
  }
  return occur;
}

var arr_res = new Array();
for (var i = 0; i < arrmix.length; i++) {
  if (countOccurrences(arrmix, arrmix[i]) < 2)
    arr_res.push(arrmix[i]);
}

console.log(arr_res);
ready
Third
var arr1 = [5, 6, 3, 8, 9, 4, 1, 99, 100, 200, 500, 600, 300, 6, 80];
var arr2 = [5, 6, 3, 8, 9, 19, 99, 101, 200, 500, 591, 221, 500, 300];
var arrmix = new Array();

for (var i = 0; i < arr1.length; i++) {
  if (arr2.indexOf(arr1[i]) == -1)
    arrmix.push(arr1[i]);
}

for (var i = 0; i < arr2.length; i++) {
  if (arr1.indexOf(arr2[i]) == -1)
    arrmix.push(arr2[i]);
}
console.log(arrmix);
ready
Fourth-P
var arr1 = [5, 6, 3, 8, 9, 4, 1, 99, 100, 200, 500, 600, 300, 6, 80];
var arr2 = [5, 6, 3, 8, 9, 19, 99, 101, 200, 500, 591, 221, 500, 300];

var mixArr = arr1.concat(arr2);
mixArr.sort(function(a, b) {
  return a - b;
});
console.log(mixArr);

var fArr = new Array();
var i = 0;
var repeated = {};
while (i < mixArr.length) {
  if (i < mixArr.length - 1)
    if (mixArr[i] != mixArr[i + 1])
      fArr.push(mixArr[i]);
    else
      i++;
    else
      fArr.push(mixArr[i]);
  i++;
}
console.log(fArr);
ready

Revisions

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

  • Revision 2: published by Carlos Cabañeranero on