JavaScript, удалите идентичные элементы из массива
-
27-10-2019 - |
Вопрос
Я делаю вызов 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 () индексы?