Soy nuevo en JavaScript. ¿Alguien puede decirme por qué se agrega counter = 1 en el siguiente código?
function count(string) { let string1 = string.split("").sort().join(""); let counter = 1; for (let i = 0; i < string1.length; i++) { if (string1[i] == string1[i + 1]) { counter++; } else { console.log(string1[i] + " " + counter); counter = 1;//-----------> this one } } } count("amanpreetsaingh");Ordena los caracteres completos en la cadena y comienza de izquierda a derecha.
Si su cadena es amanpreetsaingh , se convierte en aaaeeghimnnprts .
Ahora, lo que debe hacer es mantener un counter=1 a partir del índice 0. Y verifique para cada letra que verifique si es igual a la siguiente, si es así, entonces estamos contando para la misma letra y aumentando el counter (como en el caso de la los dos primeros a s). Una vez que llegamos a la última a , nuestra próxima letra ( e ) no es la misma que nuestra letra actual, por lo que registramos nuestro valor actual y reiniciamos el conteo.
simplemente puede usar la función de reducción:
reduce es un método de matriz, así que asegúrate de transformar tu cadena en una matriz usando split(""):
text.split("") // ["a", "a", "a", "a", "b", "b", "b", "c", "c", "c", "c", "c", "c", "c", "d", "d", "d", "d", "d", "d", "d"]luego aplique reduce en la matriz de resultados:
text.split("").reduce((acc, c) => { const counter = acc[c] || 0; return { ...acc, [c]: counter + 1, }; }, {}); // { a: 4, b: 3, c: 6, d: 5 }Le sugiero que vea esta serie de videos sobre el método de arreglos de ack Herrington: https://youtu.be/NaJI7RkSPx8