Domanda

Faccio una chiamata Ajax in uno script Lightbox che restituisce un modulo.

Quando il modulo viene caricato, chiamo var initial = $('form').serializeArray();

Quando il modulo viene inviato, chiamo var final = $('form').serializeArray();

Il che mi dà due array di oggetti, quello che ora voglio fare è confrontare ogni oggetto negli array e rimuovere quelli che non sono cambiati.

Come lo farei?

È stato utile?

Soluzione

Suppongo che i due array avranno uguale lunghezza e che gli elementi saranno nello stesso ordine in entrambi gli array. In questo caso, ciò che devi fare è guardare ogni elemento del primo array e confrontarlo con l'elemento corrispondente del secondo array; Se corrispondono, rimuovere l'elemento in quella posizione da entrambi gli array.

Qualcosa del genere dovrebbe funzionare (anche se non l'ho testato):

var i = 0;
while (i < initial.length) {
    if(initial[i] == final[i]) {
        initial.splice(i,1);
        final.splice(i,1);
    }
    else {
        i++;
    }
}

Altri suggerimenti

Il modo più veloce per farlo penso

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];
    }

// ora gioca con

cambiato

Mi sono confuso con la domanda

.splice () riordina gli indici?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top