alaskafx
@alaskafx
Не .do Frontend

Почему возвращается одно и то же значение?

let words = [
                    '/me', '/do', '/try'
                ];
let resMessage = '/do'
                let exitElement;
                for (let i = 0; i < words.length; i++) {
                    if (resMessage.indexOf(words[i]) !== -1) {
                        let kol = resMessage.indexOf(words[i])
                        exitElement = words[kol]
                    }
                }
                alert(exitElement)


Код возвращает одно и то же значение: "/me"

Почему так?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 2
samodum
@samodum
Какой вопрос - такой и ответ
Потому что на второй итерации в этой строке
let kol = resMessage.indexOf(words[i])
kol будет равен 0.
В массиве по этому индексу хранится /me

Предполагаю, что надо заменить на
let kol = i

P.S. для отладки используйте дебаггеры и логгирование
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Потому, что kol это индекс не в массиве, а в команде юзера. Обычно эта команда идёт прямо с начала строки, т.е. с индекса 0.

Надо просто exitElement = words[i]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
это всегда даст вам 0
let kol = resMessage.indexOf(words[i]);

а это всегда даст вам '/me/
exitElement = words[kol];

а это всегда покажет вам этот '/me'
alert(exitElement);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы