2014-02-05 2 views
2

Я пытаюсь написать простую программу javascript, чтобы проверить, является ли письмо гласным. Проблема заключается в том, что результат неверен и должен сказать, что «a является гласным».Сравнение элементов массива с символом

Javascript:

function findvowel(letter1, vowels) { 
    var count = vowels.length; 
    for (var i = 0; i < count; i++) { 
     if (vowels[i] === letter1) { 
      var message1 = " is a vowel"; 
      document.getElementById('exercise3').innerHTML = letter1 + message1; 
     } else { 
      var message2 = " is a consonant"; 
      document.getElementById('exercise3').innerHTML = letter1 + message2; 
     } 
    } 
} 

HTML:

<script> 
    $(document).ready(function() { 
     findvowel("a",["a","e","i","o","u"]); 
    }); 
</script> 

Выход:

a is a consonant 
+0

первую очередь, ваша функция findvowel не должны иметь параметр гласного. они не меняются. – Ibu

+2

'function findvowel (letter) { return [" a "," e "," i "," o "," u "]. IndexOf (letter)! = -1; } '-> http://jsfiddle.net/6wnhL/1/ – adeneo

+1

@adeneo - Нам нужно глубже:'/[aeiou] /i.test (письмо); ' –

ответ

2

Добавить break в свою петлю, чтобы она не будет держать.

function findvowel(letter1, vowels) { 
    var count = vowels.length; 
    for (var i = 0; i < count; i++) { 
     if (vowels[i] === letter1) { 
      var message1 = " is a vowel"; 
      document.getElementById('exercise3').innerHTML = letter1 + message1; 
      break; 
     } else { 
      var message2 = " is a consonant"; 
      document.getElementById('exercise3').innerHTML = letter1 + message2; 
     } 
    } 
} 

Вы можете использовать return false;, чтобы остановить функцию сразу же, когда гласный подобран, однако в обычных случаях break будет использоваться, потому что могут быть и другие коды, происходящие после цикла.

КСТАТИ:

function findvowel(letter){ 
    //thanks p.s.w.g for reminding me [] 
    return letter+" is a "+(/[aeiou]/i.test(letter)?"vowel":"constant"); 
} 
+2

Ну, если уж на то пошло'/[aeiou ]/i' –

+0

Добавление исправлений зафиксировано. Большое спасибо! –

1

Это то, что я хотел бы сделать, используя собственные функции:

var letter = "a"; 
var isVowel = ["a","e","i","o","u"].some(function(vowel){ 
    return vowel === letter; 
}); 

Rergarding вашего сообщения, я хотел бы попробовать что-то вроде:

var message = letter + (isVowel ? " is a vowel" : " is a consonant"); 
2

Вы тестирует гласный в for -loop и обновление выходного каждый раз. Таким образом, вывод будет отображаться только, если последний гласный, который был протестирован, соответствует входу. Вместо этого, вы должны выйти из for -loop если гласный найден, и отображать только неисправность (" is a consonant") после того, как вы проверили все гласные, и вы не смогли найти матч:

var count = vowels.length; 
for (var i = 0; i < count; i++) { 
    if (vowels[i] === letter1) { 
     var message1 = " is a vowel"; 
     document.getElementById('exercise3').innerHTML = letter1 + message1; 
     return; 
    } 
} 

var message2 = " is a consonant"; 
document.getElementById('exercise3').innerHTML = letter1 + message2; 

Но этот метод может быть упрощена:

function findvowel(letter1) { 
    var isVowel = "aeiou".indexOf(letter1) > -1; 
    var message = letter1 + " is a " + (isVowel ? "vowel" : "consonant"); 
    document.getElementById('exercise3').innerHTML = message; 
} 
0

Поскольку вы уже используете JQuery, который предлагает $ .inArray(), то почему бы вам не сделать это?

var vowels = ["a", "e", "i", "o", "u"]; 

$(document).ready(function() { 

    var letter = 'u'; 

    var found = $.inArray(letter, vowels) > -1; 

    if(found) { 
     console.log(letter + ' is a vowel'); 
    } else { 
     console.log(letter + ' is a consonant'); 
    } 

}); 
+0

Все эти ответы отлично работают, большое вам спасибо! –

0

Я бы передал объект вместо массива и воспользовался поиском постоянного времени, используя ключевое слово 'in'. Нет необходимости в цикле.

function findvowel(letter1, vowels) { 
     if (letter1 in vowels) { 
      var message1 = " is a vowel"; 
      document.getElementById('exercise3').innerHTML = letter1 + message1; 
     } else { 
      var message2 = " is a consonant"; 
      document.getElementById('exercise3').innerHTML = letter1 + message2; 
     } 
} 

затем

var obj = {'a': true, 'e': true, 'i': true, 'o': true, 'u': true} 

затем называют это

findvowel('a', obj) 
Смежные вопросы