Вопрос

Я делаю вызов Ajax в скрипте Lightbox, который возвращает форму.

При загрузке формы я звоню var initial = $('form').serializeArray();

Когда форма отправлена var final = $('form').serializeArray();

Что дает мне два массива объектов, то, что я сейчас хочу сделать, это сравнить каждый объект в массивах и удалить те, которые не изменились.

Как бы я это сделал?

Это было полезно?

Решение

Я предполагаю, что два массива будут иметь одинаковую длину, и что элементы будут в одном порядке в обоих массивах. В этом случае вам нужно посмотреть на каждый элемент первого массива и сравнить его с соответствующим элементом второго массива; Если они совпадают, удалите элемент в этом положении из обоих массивов.

Что -то подобное должно работать (хотя я не проверял это):

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

Другие советы

Самый быстрый способ сделать это, я думаю

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

// теперь играйте с

измененный

Я запутался в вопросе

Перезаряйте ли .splice () индексы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top