¿Cómo ver si una matriz tiene 2 o más elementos iguales? [duplicar]

Jan 28 2021

Tengo una matriz y quiero comprobar si alguno de los elementos de la matriz está duplicado.

["item1", "item2", "item3"] //false All the items are unique
["item1", "item2", "item1"] //true There are 2 of the same items.

Respuestas

2 jfriend00 Jan 28 2021 at 04:14

Una forma sencilla es utilizar un Set.

function doesContainDups(array) {
   let set = new Set(array);
   return set.size !== array.length;
}

console.log(doesContainDups(["item1", "item2", "item3"]));
console.log(doesContainDups(["item1", "item2", "item1"]));

1 BenBradshaw Jan 28 2021 at 04:18

Si la matriz está llena solo con cadenas, puede usar un conjunto. Cree un conjunto a partir de la matriz, luego compare la longitud de la matriz con el tamaño del conjunto. Si son iguales, entonces son únicos. Si son diferentes, hay un duplicado. He aquí un ejemplo sencillo.

const arr1 = ["item1", "item2", "item3"];
const arr2 = ["item1", "item2", "item1"];
const setFromArr1 = new Set(arr1);
const setFromArr2 = new Set(arr2);
const arr1AllUnique = arr1.length === setFromArr1.size;
const arr2AllUnique = arr2.length === setFromArr2.size;
console.log(arr1AllUnique);
console.log(arr2AllUnique);

Haytam Jan 28 2021 at 04:17

A continuación, se muestra una forma sencilla de probar si una matriz incluye duplicados de un elemento específico.

Uso: containsDuplicateOf(yourArray, "item1")

function containsDuplicateOf(array, item) {
   for (let i = 0; i < array.length; i++) {
       const current = array[i];
       let count = 0;
       for (let j = 0; j < array.length; j++) {
           if (array[j] === current)
               count++;
               
           if (count > 1) return true;
       }
   }

   return false;
}