为什么这个二维数组比较不起作用?

Why is this 2D array comparison not working?

所以,我得到了:

array1 = 
[
 ["Fisrt Name1", "Last Name1", "email@email.com"],
 ["Fisrt Name2", "Last Name2", "email2@email.com"],
 ["Fisrt Name3", "Last Name2", "email3@email.com"]
]
array2 = 
[
 ["email2@email.com"],
 ["email3@email.com"],
]

我正在尝试通过以下方式比较它们并从 array1 中保留唯一性,它应该 return:

resultingArray = 
[
 ["Fisrt Name1", "Last Name1", "email@email.com"],
 ["Fisrt Name3", "Last Name2", "email3@email.com"]
]

...但它 return 一切。

尝试 1:

resultingArray = array1.filter(e => !array2.includes(e));

尝试 2:

let resultingArray = [];
for (let a = 0; a < array1.length; a++){
    for (let n= 0; n < array2.length; n++){
      if(array1[a][2].indexOf(array2[n][0]) === -1){
        resultingArray.push(array1[a])
      }
    }
  } 

感谢您的帮助!

这是我重构代码后的最终编辑答案。

array1 = [
    ['Fisrt Name1', 'Last Name1', 'email@email.com'],
    ['Fisrt Name2', 'Last Name2', 'email2@email.com'],
    ['Fisrt Name3', 'Last Name3', 'email3@email.com'],
    ['Fisrt Name4', 'Last Name4', 'email4@email.com'],
];

array2 = [['email2@email.com'], ['email3@email.com']];

let resultingArray = [];
first: for (let a = 0; a < array1.length; a++) {
    second: for (let n = 0; n < array2.length; n++) {
        if (array1[a][2] === array2[n][0]) {
            continue first;
        }
    }
    resultingArray.push(array1[a]);
}

console.log(resultingArray);

这里我使用了标签。更多关于 labels.

您不能比较 2 个参考值(数组或对象) 也许像

array1 = [
    ['Fisrt Name1', 'Last Name1', 'email@email.com'],
    ['Fisrt Name2', 'Last Name2', 'email2@email.com'],
    ['Fisrt Name3', 'Last Name3', 'email3@email.com'],
    ['Fisrt Name4', 'Last Name4', 'email4@email.com'],
];

array2 = [['email2@email.com'], ['email3@email.com']];

const result = array2.map(item => array1.filter(e => !e.includes(item[0])))

console.log(result)