JavaScript, identische Elemente aus Array entfernen
-
27-10-2019 - |
Frage
Ich mache einen Ajax -Anruf in einem Lightbox -Skript, das ein Formular zurückgibt.
Wenn das Formular geladen ist, rufe ich an var initial = $('form').serializeArray();
Wenn das Formular eingereicht wird, rufe ich an var final = $('form').serializeArray();
Das gibt mir zwei Arrays von Objekten. Ich möchte jetzt jedes Objekt in den Arrays vergleichen und diejenigen entfernen, die sich nicht geändert haben.
Wie würde ich das machen?
Lösung
Ich gehe davon aus, dass die beiden Arrays die gleiche Länge haben und dass die Elemente in beiden Arrays in derselben Reihenfolge liegen. In diesem Fall müssen Sie sich jedes Element des ersten Arrays ansehen und mit dem entsprechenden Element des zweiten Arrays vergleichen. Wenn sie übereinstimmen, entfernen Sie das Element in dieser Position aus beiden Arrays.
So etwas sollte funktionieren (obwohl ich es nicht getestet habe):
var i = 0;
while (i < initial.length) {
if(initial[i] == final[i]) {
initial.splice(i,1);
final.splice(i,1);
}
else {
i++;
}
}
Andere Tipps
Der schnellste Weg, dies zu tun, denke ich
var len = initial.length, i=0, changed=[];
/* I hope initial.length==final.length*/
for(i; i<len; i++){
/* 0== '' */
if (initial[i]===final[i])
changed[i] = final[i];
}
// Jetzt spiele mit
geändert
Ich habe mich mit der Frage verwirrt
Ordnet .SPLICE () die Indizes neu?