JavaScript, удалить идентичные элементы из массива - PullRequest
0 голосов
/ 01 февраля 2011

Я выполняю ajax-вызов в скрипте лайтбокса, который возвращает форму.

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

при отправке формы я вызываю var final = $('form').serializeArray();

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

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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

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

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 () переупорядочивает индексы?

0 голосов
/ 01 февраля 2011

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

Нечто подобное должно работать (хотя я его не проверял):

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