Question

Je fais un appel ajax dans un script de visionneuse qui retourne un formulaire.

lorsque le formulaire est chargé j'appelle var initial = $('form').serializeArray();

lorsque le formulaire est soumis j'appelle var final = $('form').serializeArray();

qui me donne deux tableaux d'objets, Ce que je veux maintenant faire est de comparer chaque objet dans les tableaux et supprimer ceux qui ne l'ont pas changé.

comment pourrais-je faire?

Était-ce utile?

La solution

Je suppose que les deux tableaux auront la même longueur, et que les éléments seront dans le même ordre dans les deux tableaux. Dans ce cas, ce que vous devez faire est de regarder chaque élément du premier réseau et le comparer à l'élément correspondant du second réseau; si elles correspondent, puis retirer l'élément dans cette position à partir des deux tableaux.

Quelque chose comme cela devrait fonctionner (même si je ne l'ai pas testé):

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

Autres conseils

Le meilleur moyen de le faire, je pense

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

// joue maintenant avec

modifié

J'ai confondu abou la question

fait .splice () Réorganiser les index?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top