Entonces, obtuve:
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"], ] Estoy tratando de compararlos y mantener los únicos de array1 de las siguientes maneras y debería regresar:
resultingArray = [ ["Fisrt Name1", "Last Name1", "email@email.com"], ["Fisrt Name3", "Last Name2", "email3@email.com"] ]... pero está devolviendo todo.
Intento1:
resultingArray = array1.filter(e => !array2.includes(e));Intento2:
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]) } } }¡Gracias por ayudar!
Aquí está mi respuesta editada final después de refactorizar el código.
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);Aquí he usado etiquetas. Más sobre etiquetas.
No puede comparar 2 valores de referencia (matriz u objeto) Tal vez algo como
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)