Pregunta

Hago una llamada AJAX en un script de Lightbox que devuelve un formulario.

Cuando se carga el formulario, llamo var initial = $('form').serializeArray();

Cuando se envía el formulario, llamo var final = $('form').serializeArray();

Lo que me da dos conjuntos de objetos, lo que ahora quiero hacer es comparar cada objeto en las matrices y eliminar las que no han cambiado.

¿Cómo haría esto?

¿Fue útil?

Solución

Supongo que las dos matrices tendrán la misma longitud, y que los elementos estarán en el mismo orden en ambas matrices. En este caso, lo que debe hacer es mirar cada elemento de la primera matriz y compararlo con el elemento correspondiente de la segunda matriz; Si coinciden, retire el elemento en esa posición de ambas matrices.

Algo como esto debería funcionar (aunque no lo he probado):

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

Otros consejos

La forma más rápida de hacer esto, creo

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

// ahora juega con

cambió

Me confundí con la pregunta

¿.splice () reorden los índices?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top