Jeg skal kontrollere et JavaScript-array for at se, om der er dublerede værdier. Hvad er den nemmeste måde at gøre dette på? Jeg skal bare finde ud af, hvad de duplikerede værdier er - jeg har ikke brug for deres indekser eller hvor mange gange de er duplikeret.
Jeg ved, at jeg kan løkke gennem arrayet og kontrollere alle de andre værdier for et match, men det virker som om der burde være en nemmere måde.
Du kan sortere arrayet og derefter køre det igennem og se, om det næste (eller forrige) indeks er det samme som det aktuelle. Hvis du antager, at din sorteringsalgoritme er god, bør dette være mindre end O(n2):
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var sorted_arr = arr.slice().sort(); // You can define the comparing function here.
// JS by default uses a crappy string compare.
// (we use slice to clone the array so the
// original array won't be modified)
var results = [];
for (var i = 0; i < sorted_arr.length - 1; i++) {
if (sorted_arr[i + 1] == sorted_arr[i]) {
results.push(sorted_arr[i]);
}
}
console.log(results);
I tilfælde, hvis du skal returnere som en funktion for dubletter. Dette er for lignende type tilfælde.
Reference: https://stackoverflow.com/a/57532964/8119511
Du kan tilføje denne funktion eller justere den og tilføje den til Javascript's Array-prototype:
Array.prototype.unique = function () {
var r = new Array();
o:for(var i = 0, n = this.length; i < n; i++)
{
for(var x = 0, y = r.length; x < y; x++)
{
if(r[x]==this[i])
{
alert('this is a DUPE!');
continue o;
}
}
r[r.length] = this[i];
}
return r;
}
var arr = [1,2,2,3,3,4,5,6,2,3,7,8,5,9];
var unique = arr.unique();
alert(unique);