JS Dedupe Tests
HTML
<div id=status></div>
JavaScript
$('#status').text('running...');
setTimeout(function() {
var longArrayManyDupes = [];
for(var i = 0; i < 1000; i++) {
longArrayManyDupes.push(Math.floor(Math.random() * 10));
}
function dedupeSmall(array) {
var a = [];
$.each(array, function(i, o) {
if (a.indexOf(o) < 0)
a.push(o);
});
return a;
}
function dedupeLarge(array) {
array.sort();
for(var i = 1; i < array.length; i++) {
if (array[i-1] == array[i])
array.splice(i--, 1);
}
return array;
}
function dedupeManyDupes(array) {
array.sort();
var l = array.length;
for(var i = 1; i < l; i++) {
if (array[i-1] == array[i]) {
var dupe = array[i];
var mark = i;
for(i++; i < l && array[i] == dupe; i++)
{}
var snip = i - mark;
array.splice(mark, snip);
i -= snip;
l -= snip;
}
}
return array;
}
longArrayManyDupes = dedupeManyDupes(longArrayManyDupes);
$('#status').text(longArrayManyDupes.join(','));
}, 50);