const repeat= (nums) =>{ //* Done let ans = [] for(let i = 0; i< nums.length; i++){ if(nums[i] === nums[i+1]){ if(ans[ans.length -1] !== nums[i]){ ans.push(nums[i]) } } } return ans.length } console.log(repeat(['nsmg33de1','nsmg33de1','2211,','2211','1234','1234']))en este ejemplo, parece que esta función no funcionará correctamente, hay 3 cadenas repetidas en la matriz, pero generará 2
[Espero que esto te ayude, primero convierte la cadena dada en una matriz. Para hacer eso, use string.split("") . En segundo lugar, cree un mapa que almacenará la palabra como clave y contará como valor.
Ahora itere a través de stringArray y almacene la palabra actual en el mapa. Y aumente el conteo de la palabra cada vez que se encuentre la palabra.
Consulta el siguiente enlace ][1]
let words = "I am not gonna live forever, but I wanna live while I am alive"; function countRepeatedWords(sentence) { let words = sentence.split(" "); let wordMap = {}; for (let i = 0; i < words.length; i++) { let currentWordCount = wordMap[words[i]]; let count = currentWordCount ? currentWordCount : 0; wordMap[words[i]] = count + 1; } return wordMap; } console.log(countRepeatedWords(words));Depende de que valor quieras? Si desea conocer la cantidad de duplicaciones que se han producido, puede convertir su lista en un conjunto para eliminar todas las duplicaciones y simplemente calcular la diferencia de tamaños entre este conjunto y la lista original de esta manera:
function repeat(values) { return values.length - new Set(values).size; }De lo contrario, si desea saber cuántos elementos hubo que tenían al menos 1 duplicado, sería una historia diferente.
Para esto, podría convertir el conjunto en una matriz y luego asignar un 1 a cada valor donde el valor se encuentra más de una vez en la matriz y un 0 para todos los demás. Luego, podría reducir esta matriz sumando todos estos valores juntos. Como esto:
function repeat(values) { return [...new Set(values)].map(v => values.filter(o => o == v).length > 1 ? 1 : 0).reduce((a, b) => a + b); }Tiré esto juntos en la consola. No es el mejor algoritmo del mundo, pero creo que esto es lo que estás tratando de hacer:
const getCountOfDuplicates = (items) => { const count = {}; items.forEach(item => { if(count[item] && count[item] > 0) { count[item]++; } else { count[item] = 1; } }); return Object.values(count).reduce((acc, value) => { if(value > 1) { acc++; } return acc; }, 0); }; console.log('results 1', getCountOfDuplicates(['1','2','3','4','1','2','3','5', '6', '6', '7'])); // Output: "results 1", 4 console.log('results 2', getCountOfDuplicates(['nsmg33de1','nsmg33de1','2211,','2211','1234','1234'])) // Output: "results 2", 2