JavaScript, rimuovi gli articoli identici dall'array
-
27-10-2019 - |
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?
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?