如何匹配javascript数组包含不同顺序的相同项目?

时间:2014-02-11 13:08:45

标签: javascript angularjs

我有产品组,每组中的product_type_ids是识别产品组的关键。

我需要通过比较组中的每个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,如果有任何改变的话。

感谢。

1 个答案:

答案 0 :(得分:1)

最简单的方法是对字符串表示进行排序然后进行比较:

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