¿Cómo debo hacer una función que recorra una matriz y verifique si algún elemento es igual?
Ejemplo:
[a, b, c, d] //false [a, b, a, d] //trueEDITAR:
Quiero usarlo con matrices anidadas, así:
const a = [[1,2,3],[4,5,6]] //false const b = [[1,2,3],[4,5,1]] //trueEDITAR nuevamente: quiero que las matrices anidadas sean exactamente iguales
const a = [[1,2],[4,5]] //false const b = [[1,2],[1,2]] //true const c = [[1,2][3,4][1,2]] //truePuede hacer esto fácilmente usando Set como:
const getResult = (arr) => new Set(arr).size !== arr.length; Puede agregar todos los elementos al conjunto y luego comparar el size del set y la length de arr .
Obtendrá una longitud diferente si se repite algún elemento de lo contrario
const arr1 = ['a', 'b', 'c', 'd']; //false const arr2 = ['a', 'b', 'a', 'd']; //true const getResult = (arr) => new Set(arr).size !== arr.length; console.log(getResult(arr1)); console.log(getResult(arr2)); Si desea utilizar una matriz anidada, puede aplanarla antes de enviar arguments a la función getResult como:
const a = [ [1, 2, 3], [4, 5, 6], ]; //false const b = [ [1, 2, 3], [4, 5, 1], ]; //true const getResult = (arr) => new Set(arr).size !== arr.length; console.log(getResult(a.flat())); console.log(getResult(b.flat()));La forma más sencilla sería recorrer la matriz y verificar si el primer índice del elemento es el mismo que el índice actual como este:
let a = [1, 2, 3, 4] let b = [1, 2, 3, 1] let isRepeated = (a) => { for (let i = 0; i < a.length; i++) { if (a.indexOf(a[i]) !== i) return true; } return false; } console.log(isRepeated(a)); console.log(isRepeated(b));