Может кто-нибудь объяснить лог c .indexOf () в Javascript? - PullRequest
3 голосов
/ 02 мая 2020
function vowelsAndConsonants(s) {
    var vowels = ['a','e','i','o','u'];

    for(let i =0; i<s.length; i++){
        if(vowels.indexOf(s[i]) > -1 ){
            console.log(s[i]);
        }
    }

    for(let j = 0; j<s.length; j++){
      if(vowels.indexOf(s[j]) < 0){
          console.log(s[j]);
      }
    }
}

Приведенный выше код распечатывает гласные, а затем согласные ввода.

У меня проблемы с пониманием того, как конкретно .indexOf() работает в этом случае.

Я понимаю, что .indexOf() ищет массив и возвращает позицию искомого элемента, но почему следующее условие if(vowels.indexOf(s[i]) > -1) возвращает только гласные?

  • Насколько я понимаю, если .indexOf() возвращает -1, это означает, что совпадение не найдено. В этом случае if(vowels.indexOf(s[i]) > -1) будет означать, что если найдено совпадение, мы должны выполнить код, поскольку он больше -1?
  • Опять же, в этом случае if(vowels.indexOf(s[j]) < 0) будет означать, что если совпадение не найден выполнить все, что находится внутри оператора if.

Может ли кто-нибудь любезно объяснить логи c и привести простой пример? Я думаю, что я получаю логи c, но в то же время я думаю, что нет.

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Если вам действительно не нужно знать результат indexOf, чтобы что-то с ним сделать, в современном JS предпочтительнее использовать .includes(), а не тестировать -1 или 0.

.includes() просто более разборчиво

1 голос
/ 02 мая 2020

indexOf функция поиска в массиве гласных.

Если он найдет значение, он вернет свой индекс, поэтому результат будет больше -1.

И если он не найдет его, результатом будет -1.

Но лучше использовать
if(vowels.indexOf(s[j]) === -1) вместо
if(vowels.indexOf(s[j]) < 0)

...