Inspired by the article How to merge two arrays in JavaScript and de-duplicate items I have tested how fast and reliable the different variants are for large number of items. I also like to make another suggestion to solve the problem.
            Asked
            
        
        
            Active
            
        
            Viewed 58 times
        
    1 Answers
1
            in the example can be tried which function and when faster. https://dojo.telerik.com/oYuCE/4
The function uniqueArray2 works well and fast on large items.
The jQuery function $ .unique works fast, but only if the items are sorted. Otherwise, duplicates will not be filtered. Sampel:
var arr1 = ['Vijendra', 'Singh'], arr2 = ['Shakya', 'Singh']; 
alert (JSON.stringify ($ .unique (arr1.concat (arr2))));
Filters no duplicates, however:
var arr1 = ['Vijendra', 'Singh'], arr2 = ['Singh,' Shakya ''];
alert (JSON.stringify ($ .unique (arr1.concat (arr2))));
Filters the duplicates.
The function uniqueArray2 works well:
function arrayUnique2 (array) {
var tmpArrAss = {};
  $ .each (array, function (key, vs) {
    tmpArrAss [hashCode (vs)] = vs;
  });
  var tmpArr = new Array ();
  $ .each (tmpArrAss, function (key, vs) {
    if (vs.length> 0) {
      tmpArr.push (vs);
    }
  });
  return tmpArr;
}
but needs an encoder for long strings, this is here with:
function hashCode (s) {
return s.split ("") reduce (function (a, b) {a = ((a << 5) -a) + b.charCodeAt (0); return a & a}, 0);
}
solved. This has the disadvantage that the function works on very long strings.
arrayUnique2 is 20 time faster.
 
    
    
        Severin
        
- 183
- 2
- 15