2011-02-01 54 views
0

フォームを返すライトボックススクリプトでajax呼び出しを行います。フォームが、私は私が今やりたいことは配列内の各オブジェクトを比較している 、私に2つのオブジェクトの配列を与えるvar final = $('form').serializeArray();javascript、配列から同じ項目を削除する

を呼び出す提出されたときにフォームが、私はvar initial = $('form').serializeArray();

呼んでロードされている

変更されていないものを削除します。

どうすればよいですか?

答えて

0

私は、2つの配列が等しい長さを持ち、要素が両方の配列で同じ順序であると仮定しています。この場合、まず最初の配列の各要素を調べ、2番目の配列の対応する要素と比較します。一致する場合は、両方の配列からその位置の要素を削除します。

このような何かが仕事(私はそれをテストしていないが)必要があります。

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

'.splice()'はインデックスの順序を変更しますか? つまり、アイテム3が同じであれば、 '[オブジェクト、オブジェクト、未定義、オブジェクト]'または '[オブジェクト、オブジェクト、オブジェクト]'になりますか? – Hailwood

+0

spliceは配列から要素を効果的に削除します(追加の要素が指定されていない場合はhttp://www.w3schools.com/jsref/jsref_splice.aspを参照) –

0

これを行うための最速の方法私は

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

//は今

と遊ぶと思います

変更

私は混乱しているのですが質問

はありません。

関連する問題