Así que quiero que mi código cuente la cantidad de veces que aparece una letra dentro de una cadena y genere el resultado.
es decir:
amount(door, o) ===> 2¿Puedo hacerlo usando un bucle for usando
function(amount,letter){ var count=0 for (var i=0 ; i < amount.length ; i++) { if(amount[i] == letter[i]) count++ } }no estoy muy seguro de cómo hacer que funcione
Su código era casi correcto pero hubo algunos errores.
countlet o const en lugar de var=== en lugar de == function amount(word, letter) { let count = 0; for (let i = 0; i < word.length; i++) { if(word[i] === letter) count++ } return count; } console.log(amount('door', 'o'));Usando métodos de matriz puedes simplificar aún más
function amount(word, letter) { return Array.prototype.reduce.call(word, (acc, el) => acc + (el === letter), 0); } console.log(amount('door', 'o'));Puede dividir la cadena en una matriz y luego recorrer cada una de las letras. Tenemos un objeto letterTracker, que es donde se almacenan nuestros valores. Si la clave de la letra aún no existe en el objeto, le agregaremos la clave. Si existe, simplemente le agregaremos uno.
var countLetters = (string)=>{ const stringArr = string.split('') let letterTracker = {}; stringArr.forEach(letter=>{ letterTracker[letter] ? letterTracker[letter]++ : letterTracker[letter] = 1 }); return letterTracker; } countLetters('wuddup'); //returns { w: 1, u: 2, d: 2, p: 1 }Usando un método más amigable con ES5, y sin dividir la cadena en una matriz, podemos hacer esto (se logrará el mismo resultado):
function countLetters(string){ let letterTracker = {}; for(let i = 0; i < string.length; i++){ if(letterTracker[string[i]]){ letterTracker[string[i]]++ } else { letterTracker[string[i]] = 1 } } return letterTracker; } countLetters('wuddupp?'); //returns { w: 1, u: 2, d: 2, p: 2, ?: 1 }