Quiero contar cuántas veces aparece cada letra de params en esta cadena. ¿Qué estoy haciendo mal?
function solution(word) { let temp = {} for(const c of word) { temp[c]++; console.log(temp[c]) } } solution("PAPAYA")Debería mostrarme los números a continuación para cada letra, pero sigo recibiendo NaN
1 // P appeared once 1 // A appeared once 2 // P appeared second time 2 // A appeaed second time 1 // Y Once 3 // A appeared third timepor lo que debería verse como
{ A: 3, P: 2, Y: 1 }Aquí hay una solución fácil sin cambiar mucho su código
function solution(word) { let temp = {} for(const c of word) { if (temp[c] === undefined) temp[c] = 1; else temp[c]++; } console.log(temp) } solution("PAPAYA")Al principio, no se establecen propiedades en el objeto, por lo que acceder al valor de un carácter da como resultado undefined . Incrementando eso produce NaN . Deberá manejar específicamente ese caso la primera vez que aparezca una carta.
function solution(word) { let temp = {} for(const c of word) temp[c] = (temp[c] || 0) + 1; return temp; } console.log(solution("PAPAYA"));establezca temp[c] en un número (0) primero, por ejemplo
if (NaN(temp[c])) temp[c] = 0La razón de esto es porque si haces ++ en undefined, todavía no está definido y, por lo tanto, no es un número.