No estoy seguro de cómo configurar los bucles correctamente para verificar si los elementos en una matriz de destino coinciden con otras dos matrices o coinciden con ambas:
El código:
let test = [1,2,3,4,5,6,7] let test2 = [7,8,9,10,11] let check_test = [2,7,10,12] for (var testa in test) { for (var test2a in test2) { for (var check_testa in check_test) { #Triple for-loop trying to loop all arrays if (check_testa == testa && check_testa != test2) { console.log("Match TEST") } else if (check_testa != testa && check_testa == test2) { console.log("Match TEST2") } else if (check_testa == testa && check_testa == test2) { console.log("Both match!") } else { console.log("None match!") } } } } Básicamente, el código suponía comprobar si los elementos de la matriz check_test coinciden con los elementos de las otras dos matrices test y test2 .
Si el elemento (de check_test ) coincide con elementos en solo una de las otras dos matrices, imprima "¡Coincidencia [prueba] o [prueba2]!". Si ambos coinciden, imprima "¡Ambos coinciden!" y finalmente, si ninguno de los dos coincide, imprima "¡Ninguno coincide!"
Y se supone que la salida para esto es:
2 Match TEST! 7 Both Match! 10 Match TEST2! 12 None Match!Entonces, ¿cómo configurar los bucles correctamente para que coincidan con la verificación y luego imprimir los elementos y generarlos solo una vez? Gracias por leer.
No necesita un bucle anidado. Use .includes para verificar en cuál de las otras matrices existe el valor que se está iterando (si corresponde), y no lo use in iterar sobre las matrices (y si fuera a usar in , al menos acceda al valor en la matriz con notación de corchetes, en lugar de usar el índice solamente).
let test1 = [1,2,3,4,5,6,7]; let test2 = [7,8,9,10,11]; let check_test = [2,7,10,12]; for (const num of check_test) { const one = test1.includes(num); const two = test2.includes(num); if (one && two) { console.log('both'); } else if (!one && !two) { console.log('neither'); } else if (one) { console.log('one'); } else { console.log('two'); } }