Tengo una matriz JS con cadenas, por ejemplo:
var strArray = [ "q", "w", "w", "e", "i", "u", "r"];
Necesito comparar cadenas duplicadas dentro de la matriz, y si existe una cadena duplicada, debería haber un cuadro de alerta que apunte a esa cadena.
Estaba tratando de compararlo con for
loop, pero no sé cómo escribir código para que la matriz verifique sus propias cadenas en busca de duplicados, sin una cadena predeterminada para comparar.
La función findDuplicates
(a continuación) compara el índice de todos los elementos de la matriz con el índice de la primera aparición del mismo elemento. Si los índices no son los mismos, lo devuelve como duplicado.
let strArray = [ "q", "w", "w", "w", "e", "i", "u", "r"]; let findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) != index) console.log(findDuplicates(strArray)) // All duplicates console.log([...new Set(findDuplicates(strArray))]) // Unique duplicates
function checkIfDuplicateExists(arr) { return new Set(arr).size !== arr.length } var arr = ["a", "a", "b", "c"]; var arr1 = ["a", "b", "c"]; console.log(checkIfDuplicateExists(arr)); // true console.log(checkIfDuplicateExists(arr1)); // false
var strArray = [ "q", "w", "w", "e", "i", "u", "r", "q"]; var alreadySeen = []; strArray.forEach(function(str) { if (alreadySeen[str]) console.log(str); else alreadySeen[str] = true; });
Agregué otro duplicado allí desde su original solo para mostrar que encontraría un duplicado no consecutivo.
Versión actualizada con función de flecha:
const strArray = [ "q", "w", "w", "e", "i", "u", "r", "q"]; const alreadySeen = []; strArray.forEach(str => alreadySeen[str] ? console.log(str) : alreadySeen[str] = true);