2014-02-11 75 views
0

我在每個組中有產品組和product_type_ids是識別產品組的關鍵。如何匹配不同順序的相同項目的JavaScript數組?

我需要通過比較組中的每個product_type_id來匹配不同的組,並且product_type_ids可能以不同的順序排列,但是必須匹配該組的id以做出決定。

因此,不是循環遍歷數組中的每個項目來查找匹配項,還有其他方法或方法來確定它們是否匹配。

這裏是一些示例數據,這將有助於我的問題澄清。

Group Name | Product Type IDs 
GR1  | 1,2,14 
GR2  | 2,7,8 
GR3  | 4,5,6 
GR4  | 2,14,1 
GR5  | 2,14 

注:ID不是非常隨機的,除了GR5,它們總共給出17(= 1 + 2 + 14)。

那麼,我可以知道GR1和GR4是匹配嗎?

我需要這個用於Javascript,更確切地說是AngularJS,如果這做任何改變。

謝謝。

+0

散列,排序,... –

+0

他們排序,使他們有相同的順序,那麼比較將會非常簡單。 – Bergi

+1

使用一個詳盡的方法:排列'''product-type-ids'''數組並查看它是否匹配。 – turnt

回答

1

的simpliest辦法是進行排序,然後比較字符串表示:

function checkSame(arr1, arr2) { 
    arr1 = arr1.sort(); 
    arr2 = arr2.sort(); 
    return arr1.join() === arr2.join(); 
} 

checkSame([1,2,14], [2,14,1]); // true 
checkSame([1,2,14], [2,14,3]); // false 

或者你可以循環和比較值:

function checkSame(arr1, arr2) { 

    if (arr1.length !== arr2.length) return false; 

    arr1 = arr1.sort(); 
    arr2 = arr2.sort(); 

    for (var i = 0; i < arr1.length; i++) { 
     if (arr1[i] !== arr2[i]) { 
      return false; 
     } 
    } 

    return true; 
} 
相關問題