Как проверить, находится ли аргумент/параметр внутри константы, уже определенной в JavaScript?

#javascript #compare

Вопрос:

Я делаю маленького бота на javascript, который должен определять, что я пишу, и давать ответ. В этом случае эта команда «look» имеет несколько аргументов/параметров, таких как a, b и c. Я хочу получить утвердительный ответ только в том случае, если аргумент/параметр, о котором я говорю, находится внутри «взгляда». И отрицательный, если это не так. Я догадался, что это делается с помощью «если», но я не могу понять, как это так.

Пример… Константа с ее аргументами/параметрами:

 const hi = [ 'a', 'b, 'c' ] // This has worked for me before.
 

Что я на самом деле ожидаю от нее услышать:

 look a
if (args[0] == "hi") return reply('Done, its there! :D') 
if (!args[0] == "hi") return reply('Its not there. I cant make magic things.')
 

Если я скажу «смотри z», она должна сказать второй ответ.

Но по какой-то причине (очевидно, я делаю что-то не так) на обоих она ничего не делает и продолжает выполнять следующий код, который у нее есть.

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

1. if (!args[0] == "hi") должно быть if (args[0] != "hi") .

2. Но вы должны использовать else , когда второе условие противоположно первому.

3. На самом деле то, что ты сказал, сработало. Но не так, как ожидалось! Теперь она не игнорирует это. Но это действует только в том случае, если я говорю «привет».

4. Она не смотрит на постоянное «привет», это то, что я имел в виду.

Ответ №1:

Вы проверяете , является ли args[0] это словом hi , а не находится ли оно в массиве с таким именем. Так что это сработает только в том случае, если вы напишете look hi .

Используйте includes() для проверки, находится ли что-то в массиве, и не ставьте кавычки вокруг имени переменной.

 if (hi.includes(args[0])) {
    return reply('Done, its there! :D');
} else {
    return reply('Its not there. I cant make magic things.')
}