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?

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top