Tengo una matriz bidimensional como la siguiente:
array = [ [ 1, 1 ], [ 1, 2 ], [ 1, 1 ], [ 2, 3 ] ]Quiero comparar el valor en el índice de matriz para ver si tienen valores duplicados. Por ejemplo
array[0] = [1,1]; array[1] = [1,2]; array[2] = [1,1];Podemos ver que el valor en el índice 0 y 2 es el mismo que es [1,1]. Entonces, en ese caso, quiero tener una bandera verdadera. ¿Cuál es la forma más eficiente de hacerlo? o ¿Cuáles son las diferentes formas de hacerlo? Cualquier tipo de sugerencia o ayuda sería genial con un poco de explicación. Gracias por adelantado.
Puede lograrlo convirtiendo los elementos de la matriz interna en una cadena solo para fines de comparación.
demostración:
const arr = [[ 1, 1 ], [ 1, 2 ], [ 1, 1 ], [ 2, 3 ]]; const stringConversion = arr.map((item) => JSON.stringify(item)) const duplicateElements = stringConversion.filter((item, index) => stringConversion.indexOf(item) !== index) console.log(duplicateElements.length ? true : false);Entonces, lo que creo que puedes hacer es:
Creo que puedes usar una forma diferente de hacer un bucle en la matriz, esto es lo que probé:
// DECLARATIONS array = [[ 1, 1 ], [ 1, 2 ], [ 1, 1 ], [ 2, 3 ]]; // LOOPING THE ARRAY for (row of array) { // RETURN TO CONSOLE OR WHATEVER THE BOOLEAN VALUE console.log(row[0] == row[1]); }String para convertir la matriz en una matriz unidimensional de cadenas y some para verificar si algún elemento está duplicado:
const arr = [[1, 1], [1, 2], [1, 1], [2, 3]]; const result = arr.map(String).some((v, i, a) => a.indexOf(v) !== i); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }