Я пытаюсь загрузить файл JSON в качестве объекта JavaScript. Затем я превращаю ключи в их собственный массив. Затем я пытаюсь искать через строку ввода пользователя, чтобы найти любые совпадения. Если совпадение найдено, я тогда хочу, чтобы это проверило, является ли значение этой ключом «следующим» и если да, то сделайте одну вещь. Если значение не «следующее», я хочу, чтобы оно сделало другое дело. Если ни один из ключей не соответствует ни одного из слов в строке ввода пользователя, я хочу, чтобы он отправил сообщение об ошибке. Эта последняя часть кажется проблемой. Когда пользователь набирает строку без ключевого слова, он иногда регистрирует сообщение об ошибке более одного раза. Я заметил, что это происходит, особенно когда загружается новый файл JSON. Вот ссылка туда, где я думаю, проблема. Я попробовал практически все, что я могу думать, но у каждого решения, кажется, такая же проблема Так что, может быть, я просто смотрю не в том месте. Если у вас есть какие -либо вопросы или вам нужно больше информации, пожалуйста, дайте мне знать.
У меня есть объект, который выглядит так:
var object = {"keyword": "next", "other word": "wrong", "test": "wrong"}
Он был загружен из файла JSON, доступ к серверу, используя API Fetch. Затем у меня есть ящик ввода, который, когда пользователь входит в один из трех ключей объекта, должен повторить его значение при вводе. Если в строке нет ключей, у пользователя есть ввод, он должен распечатать сообщение об ошибке. Если значение ключа «следующее», оно должно запустить функцию с именем loadlevel () для загрузки следующего уровня. Этот следующий уровень затем загружается так же, как и вышеупомянутый. Похоже, что у меня проблемы. Когда он загружает новый файл JSON, кажется, что и предыдущий объект, и новый объект все еще работают. Это заставляет его распечатать сообщение об ошибке, если новый ввод не соответствует обоим новым ключам. См. Пример ниже:
Настраивать:
//This is the first object loaded from the json file:
var object = {"keyword": "next", "other word": "wrong", "test": "wrong"}
Что должно произойти
Когда пользователь вводит следующие строки, он должен иметь соответствующие выходы:
"this is the other word" => "wrong" "hello, world" => "error" "this is the keyword" => "next" loadlevel()
Когда следующий уровень загружен, например, скажем, это:
var object = {"smith": "next", "hello": "wrong", "hi there": "wrong"}
Затем он должен вывести это:
"this is the other word" => "error" "hello, world" => "wrong" "this is smith" => "next" loadlevel()
Что происходит
Первые ценности, кажется, работают нормально:
"this is the other word" => "wrong" "hello, world" => "error" "this is the keyword" => "next" loadlevel()
Когда следующий уровень загружен, например, скажем, это:
var object = {"smith": "next", "hello": "wrong", "hi there": "wrong"}
Затем он выводит это:
"this is the other word" => "error" "error" "hello, world" => "wrong" "error" "this is smith" => "next" "error" loadlevel()
Оригинал: “https://dev.to/kevinuulong/scanning-user-input-and-looking-for-keywords-431f”