Javascript:比较三个数组

Jsu*_*alv 4 javascript arrays loops for-loop

我想比较许多数组并组合任何相同的数组:

A = [1,2,3];
B = [1,2,3];
C = [1,2,3];

D = [10,11,12];
E = [10,11,12];
F = [10,11,12];

G = [13,14];
H = [13,14];
Run Code Online (Sandbox Code Playgroud)

如果有相同的数组,那么我想用相同的数组创建新的数组:

I = [1,2,3];
J = [10,11,12];
K = [13,14];
Run Code Online (Sandbox Code Playgroud)

我是否需要针对其他数组中的所有元素迭代一个数组中的每个元素?

for (var i in A) {
    for (var j in B) {
        if (A[i] == J[j]) {
            // create new arrays
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

等等...

然后,从匹配中创建新数组?听起来像很多开销.

实现这一目标的最佳方法是什么?

谢谢!

nra*_*itz 5

如果你只是想完成独特的数组,我会使用哈希方法:

var myArrays = [A,B,C,D,E,F,G],
    uniques = [],
    hashes = {};

for (var i=0; i < myArrays.length; i++) {
    var hash = JSON.stringify(myArrays[i]); // or .toString(), or whatever
    if (!(hash in hashes)) {
        hashes[hash] = true;
        uniques.push(myArrays[i]);
    }
}
// uniques now holds all unique arrays
Run Code Online (Sandbox Code Playgroud)