Escriba una función removeVowelKeys, que tome una matriz de cadenas de claves y devuelva una matriz de claves que no comience con una vocal (aeiouy). El caso de la letra no importa.
Ejemplo :
removeVowelKeys(['alarm', 'chip', 'isValid', 'Advice', 'onClick']); // ['chip']Aquí está mi intento, este es el máximo que podría obtener de él:
function removeVowelKeys(keys) { let result = []; for (let i=0;i<=keys.length;i++){ if (keys[i][0]!= 'a'||keys[i][0]!= 'e'||keys[i][0]!= 'i'||keys[i][0]!= 'o'||keys[i][0]!= 'u'||keys[i][0]!= 'y'){ result.push(keys[i]) } } return result; }El problema con esta condición es:
if (keys[i][0]!= 'a'||keys[i][0]!= 'e'||keys[i][0]!= 'i'||keys[i][0]!= 'o'||keys[i][0]!= 'u'||keys[i][0]!= 'y') que coincidirá con cualquier alfabeto. Estás haciendo una comprobación OR . Tome por ejemplo e y haga un ensayo. Será psas la primera condición. a pasará la segunda condición. Y si alguna de las expresiones es verdadera, toda la expresión devuelve verdadera.
function removeVowelKeys(keys) { let result = []; for (let i=0;i<keys.length;i++){ if (keys[i][0].toLowerCase()!= 'a'&&keys[i][0].toLowerCase()!= 'e'&&keys[i][0].toLowerCase()!= 'i'&&keys[i][0].toLowerCase()!= 'o'&&keys[i][0].toLowerCase()!= 'u'&&keys[i][0].toLowerCase()!= 'y'){ result.push(keys[i]) } } return result; } console.log(removeVowelKeys(['alarm', 'chip', 'isValid', 'Advice', 'onClick'])); Además de eso, desea que su código se ejecute hasta i<keys.length . Las matrices están basadas en 0 a la derecha. Y para manejar el caso, necesitaría minúsculas como se hizo anteriormente.
Puede filter la matriz y, en cada elemento, verificar si el elemento startsWith un carácter de vocal de la matriz con some método.
const vowelChar = ['a', 'o', 'e', 'i', 'y', 'u'] console.log(removeVowelKeys(['alarm', 'chip', 'isValid', 'Advice', 'onClick'])); // ['chip'] function removeVowelKeys(keys) { return keys.filter(item => !vowelChar.some(c => item.toLowerCase().startsWith(c))) }Aquí hay otra solución en caso de que alguien quiera usar expresiones regulares. Todavía recorre las teclas y toma el primer carácter de cada argumento pasado, pero lo compara con las vocales.
function removeVowelKeys(keys) { let result = []; for (let i = 0; i <= keys.length-1; i++) { if(!keys[i][0].match(/[aeiuoy]/i)){ result.push(keys[i]) } } return result; } console.log(removeVowelKeys(['alarm', 'chip', 'isValid', 'Advice', 'onClick']));