Soy un novato que se esfuerza por dominar javascript. por favor ayúdame a consolidar mis fundamentos.
la entrada será una cadena de letras.
siguientes son los requisitos.
La función debe devolver verdadero si se cumplen las siguientes condiciones:
las letras están en orden alfabético. (insensible a mayúsculas y minúsculas)
solo se pasa una letra como entrada. ejemplo :
isAlphabet ('abc') === true isAlphabet ('aBc') === true isAlphabet ('a') === true isAlphabet ('mnoprqst') === false isAlphabet ('') === false isAlphabet ('tt') === false
function isAlphabet(letters) { const string = letters.toLowerCase(); for (let i = 0; i < string.length; i++) { const diff = string.charCodeAt(i + 1) - string.charCodeAt(i); if (diff === 1) { continue; } else if (string === '') { return false; } else if (string.length === 1) { return true; } else { return false; } } return true; }
En general, es una mejor práctica comenzar su función tratando con los casos extremos en lugar de ponerlos en algún punto intermedio. De esa manera, la función regresa tan pronto como puede, y es mucho más fácil de leer que una cascada de declaraciones if..else
.
function isAlphabet(letters) { if ("" == letters) { return false; } if (1 == letters.length) { return true; } const string = letters.toLowerCase(); // carry on with your loop here. }
Tienes la idea correcta, pero se puede simplificar para que falle en una condición de error particular, es decir, cuando un carácter más pequeño sigue a uno más grande:
function isAlphabet(letters) { const string = letters.toLowerCase(); let lastChar; for (let i = 0; i < string.length; i++) { // Grab a character let thisChar = string.charCodeAt(i); // Check for the failure case, when a lower character follows a higher one if (i && (thisChar < lastChar)) { return false; } // Store this character to check the next one lastChar = thisChar; } // If it got this far then input is valid return true; } console.log(isAlphabet("abc")); console.log(isAlphabet("aBc")); console.log(isAlphabet("acb"));
Puede usar la forma simple de lograr lo mismo que a continuación
function isAlphabet(inputString) { var sortedString = inputString.toLowerCase().split("").sort().join(""); return sortedString == inputString.toLowerCase(); } console.log("abc = " + isAlphabet("abc")); console.log("aBc = " + isAlphabet("aBc")); console.log("acb = " + isAlphabet("acb")); console.log("mnoprqst = " + isAlphabet("mnoprqst"));
Nota: Marque la respuesta si resuelve su problema.