比较 Javascript 中的两个数组以找出相同的相似点和其他相似点

Comparing Two Arrays in Javascript to Find Identical Similarities and Other Similarities

我在 Javascript 中有两个数组:code 和 submittedCode。我正在尝试比较这两个数组。每个数组都是 4 个整数长,每个整数是 1 到 6 的随机值。我还有两个变量:红色和白色。两者比较时,红色变量应设置为相同编号、相同索引的数组中相似的个数。 White 应该设置为数组中相同数量但不同索引的相似数量。比如code数组是[1, 3, 6, 5],submittedCode是[1, 6, 4, 5],那么red设置为2,white设置为1,这是一样的如果有人玩过的话,逻辑就像游戏策划者一样。以下是我尝试过的方法,但没有按预期工作。

for(let i = 0; i < code.length; i++) {
        if(code[i] == submittedCode[i])
        {
            code.splice(i, 1);
            submittedCode.splice(i, 1);
            red++;
            //console.log(i);
        }
    }
    console.log(code);
    var saveLength = code.length;

    code = code.filter(function(val) {
  return submittedCode.indexOf(val) == -1;
    });

    white = saveLength - code.length;

    console.log(red + ", " + white);
let arr=[1,3,1,2]       //two array we operate on
let arr2=[4,4,1,2]

let red=0
let white=0

//we need to check the current length of remaining array
let currentLength=arr.length            

for(let i=0; i<currentLength; i++){
    if(arr[i]===arr2[i]){       
    arr.splice(i,1)             //if same number same index, remove this item from array
    arr2.splice(i,1)
    currentLength-=1            //currentLength-1 because we reduced the array
    i-=1                                    //i-1 because we'd skip the next element
    red+=1                              //update red
  }
}

//we basically do the same thing but with white
//but in the second array we look for the first index of the current element and remove that
for(let i=0; i<arr.length; i++){
if(arr2.includes(arr[i])){   
    //1: I should've taken away the item from arr2 first
    //2: arr2.splice(arr2.findIndex(f=>f===arr[i],1))  notice I messed up where I put the 1 at the end
    arr2.splice(arr2.findIndex(f=>f===arr[i]),1)
    arr.splice(i,1)  
    i-=1
    white+=1
}
}

现在这可能不是最佳解决方案,您可以在一个循环中执行此操作,但为了可见性,我创建了 2 个 for 循环,首先我们检查 'red' 元素,然后将它们取出 在第二个循环中,我们检查是否有任何 'white' 元素,然后将它们取出。