2016-02-27 14 views
0

我是新來的Jquery,我想做一個「簡單」的事情,但我所有的嘗試失敗。 這就是問題,如果有一個包含簡單對象兩個數組,他們是這樣的:無法比較兩個數組中的對象在JQuery中,嘗試不同的方法沒有成功

arr1 = [Object { productID="41", quantityOrdered=3}, Object { productID="42", quantityOrdered=3}]; 
arr2 = [Object { productID="41", quantityList=5}, Object { productID="42", quantityList=4}]; 

正如你可以看到他們是簡單的對象。我只需要一種方法來比較它們是否相等。更確切地說,我需要比較一個productID在arr1(值quantityOrdered)和arr2(值quantityList)中獲得的數量是否相同。

我已經嘗試了不同的方法,但都失敗了:/

if($(arr1).not(arr2).length === 0 && $(arr2).not(arr1).length === 0) 
{ 
    // my code here never executed 
} 

或者

if (JSON.stringify(array1) == JSON.stringify(array2)) 
{ 
    // my code here never executed 
} 

或功能在這裏找到:http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256BFB0077DFFD(areArraysEqual),但我的 「真」 每次都返回。 ...

有人對此有所瞭解?我敢肯定,這是很容易的,但我無法找到它了... 這裏你可以看到所有代碼:http://pastebin.com/4CSJDkSk

預先感謝你的未來的答案:)

+0

在兩個數組中,與「productID」匹配的對象的數組索引是否總是相同?就像'arr1 [0] .productID'的值是41,'arr2 [0] .productID'的值是41? – shamsup

+0

現在是的,在兩個數組中,具有匹配productID的對象的數組索引始終相同。 – Siick

回答

1

得到的唯一途徑數組中所有對象的屬性值都是循環遍歷數組,並特別檢查需要相等的值。這假定productID將匹配具有相同數組索引的數組元素。

for(var i=0;i<arr1.length;i++){ 
    if (arr1[i].quantityOrdered == arr2[i].quantityList) { 
     // execute code for if quanityOrdered = quantityList 
    } else { 
     // execute code for when they are not equal 
    } 
} 

如果你遇到這樣的情況該對象的匹配productID性能指標是不同的,那麼你可能需要使用額外的嵌套的循環來檢查productIDquantityOrdered爲每個對象在arr1對每對象在arr2

+0

謝謝,它完美的工作。 – Siick

+0

@Siick我很高興我能幫到你 – shamsup

相關問題