我在一個返回表單的燈箱腳本中做ajax調用。當窗體加載我打電話var initial = $('form').serializeArray();
javascript,從數組中刪除相同的項目
當表單提交我打電話var final = $('form').serializeArray();
這給了我對象的兩個數組
, 我現在想要做的是在陣列比較每個對象並刪除那些沒有改變的。
我該怎麼做?
我在一個返回表單的燈箱腳本中做ajax調用。當窗體加載我打電話var initial = $('form').serializeArray();
javascript,從數組中刪除相同的項目
當表單提交我打電話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];
}
//現在
玩changed
我弄糊塗了問題
does .splice()重新排序索引?
does`.splice()`重新排序索引? 即即使項目3是相同的,我最終會得到'[object,object,undefined,object]`或`[object,object,object]`? – Hailwood 2011-02-01 11:36:29