Quiero iterar sobre una cadena y verificar si un carácter en un índice específico está dentro de un rango de letras; "a" a "m" en el alfabeto.
¿Hay una manera rápida de hacer esto en lugar de declarar una nueva cadena u objeto y escribir todas las letras dentro de mi rango deseado y verificar si la letra actual es un carácter dentro de esa cadena u objeto?
/* str takes in a string of characters such as 'askjbfdskjhsdkfjhskdjhf' count each time a character exists thats not a letter between am in the alphabet */ function countOutOfRange(str) { // count each time a letter shows up thats not within a range of letters }Use la match con una expresión regular para devolver la longitud de la matriz devuelta donde las letras no están dentro de su rango.
function counter(str) { return str.match(/[^am]/g).length; } console.log(counter('zhuresma')); console.log(counter('bob')); console.log(counter('abcdefghijklmnopqrstuvwxyz'));Si quieres que sea más flexible:
function counter(str, range) { const query = `[^${range[0]}-${range[1]}]`; const regex = new RegExp(query, 'g'); return str.match(regex).length; } console.log(counter('zhuresma', ['a', 'b'])); console.log(counter('bob', ['a', 'm'])); console.log(counter('abcdefghijklmnopqrstuvwxyz', ['y', 'z']));Desea usar charCodeAt() para recorrer cada carácter en la cadena dada.
/* str takes in a string of characters such as 'askjbfdskjhsdkfjhskdjhf' count each time a character exists thats not a letter between am in the alphabet */ function countOutOfRange(sentence, beginChar, endChar) { // count each time a letter shows up thats not within a range of letters let sum = 0; for (let i = 0; i < sentence.length; i++) { if (sentence.charCodeAt(i) > beginChar.charCodeAt(0) && sentence.charCodeAt(i) < endChar.charCodeAt(0)) sum++; } return sum; } console.log(countOutOfRange('askjbfdskjhsdkfjhskdjhf', 'a', 'm'));