Отображение строк на основе определенных букв алфавита

Я пытаюсь понять, почему мой код не работает. Я создаю функцию, которая принимает буквы алфавита. Если это буква a, e, i, o или u, тогда моя программа должна отобразить сообщение, указывающее, что введенная буква является гласной. Если буква y, то моя функция должна отображать сообщение, указывающее, что иногда y - гласная, а иногда - согласная. В противном случае моя функция должна отображать сообщение о том, что буква является согласной.

Вот мой код

function vowelOrCons(letter) {
  if ((letter) === 'a'; 'e'; 'i'; 'o'; 'u') {
    return 'vowel';
  } else if {
   ((letter) === 'y') {
     return 'vowel or consonant';
  } else if {
   ((letter) === "b", "c", "d", "f", "g", "h", "j", "k", "l", 
    "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z")
     return 'consonant';
    }
    else
    {
     return 'Your entry is invalid';
    }
  }
}

Я пытаюсь лучше изучить Javascript, поэтому ценю любую помощь, ресурсы и / или объяснения относительно моей работы, спасибо!

похоже на новый язык ...

Nina Scholz 17.12.2018 23:36

@NinaScholz Умерла .. :)

Orel Eraki 17.12.2018 23:36

@ codeintech3 помогли ли вам какие-либо из этих ответов решить вашу проблему?

ksav 16.01.2019 17:23

Да, все ответы и объяснения были очень полезны

codeintech3 16.01.2019 22:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
141
4

Ответы 4

Ваша проблема в синтаксисе.

if ((condition || another-condition) && condition) {
}
else if (some-other-condition) {
}
else {
}

Теперь что касается проверки, ее можно сократить с помощью строкового метода includes.

const firstLetter = letter.charAt(0);
if ("aeiou".includes(firstLetter)) { .. }

Хорошо, нужно немного поработать. Взгляните на исправленный код ниже. Сначала мы перемещаем тестовые буквы в массивы и используем индекс. Затем мы исправили проблемы с синтаксисом и добавили тестовый журнал в конце.

  function vowelOrCons(letter) {
     let vowels = ['a', 'e', 'i', 'o', 'u'];
     let consonants = ["b", "c", "d", "f", "g", "h", "j", "k", "l", 
          "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z"];
     if (vowels.indexOf(letter) > -1 ) {
       return 'vowel';
     } else if (letter === 'y') {
          return 'vowel or consonant';
    } else if (consonants.indexOf(letter) > -1 ){
           return 'consonant';
      } else {
         return 'Your entry is invalid';
      }

   }

console.info(vowelOrCons('a'));
console.info(vowelOrCons(''));
console.info(vowelOrCons('1'));
console.info(vowelOrCons('y'));
console.info(vowelOrCons('w'));

Вы можете использовать String#includes и вернуться, если true с сообщением.

В этом коде используется подход раннего выхода за счет использования предложения if и возврата. Преимущество состоит в том, чтобы опустить части else, потому что возврат выходит из функции.

function vowelOrCons(letter) {
    letter = letter.toLowerCase();
    if ('aeiou'.includes(letter)) {
        return 'vowel';
    }
    if (letter === 'y') {
        return 'vowel or consonant';
    }
    if ('bcdfghjklmnpqrstvwxz'.includes(letter)) {
        return 'consonant';
    }
    return 'Your entry is invalid';
}

console.info(vowelOrCons('a'));
console.info(vowelOrCons('b'));
console.info(vowelOrCons('1'));

Я бы посоветовал вам объявить массив для гласных, один для согласных, а затем проверить, есть ли в массиве интересующая буква, но сначала проверьте, является ли это «y», как показано ниже;

var vowels  = ['a', 'e', 'i',....]];
var consonants  = ['b', 'c', 'd', ....]];

if ('y' == letter) {
    // print your sentence
}
else if (/* letter is in the vowels array */) {
    // print your sentence
}
else if (/* letter is in the consonants array */) {
    // print your sentence
}

Удачи

Другие вопросы по теме