если условие не работает в javascript при сравнении

#javascript #arrays

#javascript #массивы

Вопрос:

я пытаюсь перебрать слово и проверить, существует ли в нем буква-указатель или нет, но по какой-то причине условие в операторе if не работает.

 Main.UpdateLetter = function(letter) {
    Main.Changes = 0;

    for(i = 0 ; i < Main.word.length ; i  ){

        Main.wordArray[i] = Main.word.charAt(i);

        console.log(Main.wordArray[i]); 

        if (  Main.wordArray[i]  ==  d ) {
            alert("found letter");
        } else {
            console.log("not found");
        }
    }
}
  

Комментарии:

1. Пожалуйста, отредактируйте свой ответ и очистите отступ.

2. Что такое d ? Как вы его инициализируете?

3. Я подозреваю, что вы хотите сравнить Main.wordArray[i] === letter , чтобы использовать аргумент функции…

Ответ №1:

Почему вы делаете это таким образом, Java Script предоставил вам много вариантов, вы можете сделать это, используя либо JavaScript String includes(), либо метод indexOf()

включает метод ()

 var str = "Hello world, welcome to the universe.";
var n = str.includes("world");
  

Результатом n будет:true
Метод includes() определяет, содержит ли строка символы указанной строки.

Этот метод возвращает true, если строка содержит символы, и false, если нет.

Метод indexOf()

 var str = "Hello world, welcome to the universe.";
var n = str.indexOf("welcome"); 
  

Результатом n будет:13
Метод indexOf() возвращает позицию первого вхождения указанного значения в строке.

Этот метод возвращает значение -1, если искомое значение никогда не встречается.

Комментарии:

1. спасибо за помощь, но я пытаюсь выяснить, что не так с кодом здесь….

2. в вашем коде вы пытаетесь сопоставить символ d, чтобы сопоставить символ, напишите как «d», потому что d используется как переменная

Ответ №2:

Возможно, вы пытаетесь сделать это сложным способом. Попробуйте функцию indexOf. Этот метод возвращает позицию первого вхождения указанного значения в строке. Этот метод возвращает -1, если значение для поиска никогда не встречается, например:

 var x = Main.word.indexOf("d");
if( x > -1 ){
    alert("found letter at position " x);
}
else{
    alert("Letter not found");
}
  

Ответ №3:

Я думаю, это то, что вы хотите!

  for (var i = 0, len = Main.word.length; i < len; i  ) {
      if(Main.word.charAt(i) == "A"){
         alert("found letter");
      }else{
         console.log("not found");
      }
  }
  

Ответ №4:

трудно понять, что вы пытаетесь сделать, я подозреваю, что вы пытаетесь использовать ООП-подход, чтобы либо определить, присутствует ли буква в какой-то строке, либо указать, что имя метода UpdateLetter означает, что вы хотите заменить букву какой-то другой строкой…

вот пример реализации, как это может быть достигнуто с помощью прототипического конструктора наследования и метода replace:

 // object type definition (sometimes called "class")
function Main (word) {
  this.word = word;
};
Main.prototype.wordHasLetter = function(letter) {
  return this.word.indexOf(letter) !== -1;
};
Main.prototype.replaceLetterInWord = function(letter, replacement) {
  var regex = new RegExp(letter, "g");
  this.word = this.word.replace(regex, replacement);
};

// create instance of the type Main
var main = new Main("abcabc");

// sample usage of the methods
console.log("main.word is:", main.word)
if (main.wordHasLetter("a")) {
  console.log("found letter")
} else {
  console.log("not found")
}
main.replaceLetterInWord("a", "x");
console.log(main.word);