Поиск в строке, введенной пользователем, для любого значения массива - PullRequest
0 голосов
/ 30 октября 2019

У меня есть объект, который выглядит так: var object = {"keyword": "next", "other word": "wrong", "test": "wrong"}. Я хочу взять ввод, который пользователь вводит в текстовое поле, и найти этот ввод для любого из ключей объектов. Если это совпадение, я также хочу проверить, является ли значение этого ключа «следующим». Если это так, я хочу, чтобы он мог запустить функцию. Если ключ совпадает, но значение не является «следующим», я хочу, чтобы он console.log имел значение.

Вот код, который я сейчас использую:

var object = {"keyword": "next", "other word": "wrong", "test": "wrong"}
var match;
document.addEventListener('keyup', function(e){
    var text = document.getElementById("input").value;
    var options = Object.keys(object);
    if (e.keyCode == 13){
      if(options.some(function(element){
        match = element;
        return text.toString().indexOf(element) != -1;
      })){
        if (object[match].toString() == "next"){
          console.log("next");
          document.getElementById("input").value = "";
        } else {                         
          console.log(object[match]);
          document.getElementById("input").value = "";
        }
    } else {
      document.getElementById("input").value = "";
      console.log("A valid keyword could not be found in your response: please try again!");
    }
  }
});
<input id='input' autofocus>
<div id="gamearea"></div>

Этот код работает нормально, пока я не изменю то, что данные объекта, в которых точка, набрав «другое слово», будут выводить не только «неправильно», но и «Действительный»Не удалось найти ключевое слово в вашем ответе: попробуйте еще раз! "Если вам это нужно, я могу опубликовать больше кода, но я старался не копировать / вставлять весь мой файл. Любые решения или даже просто указатели приветствуются.

Ответы [ 3 ]

1 голос
/ 30 октября 2019

С учетом ввода вы можете проверить, является ли это свойство вашего object, используя Object.prototype.hasOwnProperty(). Используя обозначения в скобках, вы можете затем извлечь значение свойства, предоставленного в качестве ввода, чтобы проверить, равно ли оно "next":

var object = {"keyword": "next", "other word": "wrong", "test": "wrong"};
var userInput = "keyword";

if(object.hasOwnProperty(userInput)) { // check that user input is a property . in object
  var value = object[userInput]
  if(value === "next") { // check that the value of the users input is "next"
    // run some function
    console.log("Value next, so we can call a function");
  } else { // the value is not next, so we can log it
    console.log(value);
  }
}
0 голосов
/ 30 октября 2019

Ниже приведен базовый пример, который даст вам представление об использовании Object.keys

var object = {"keyword": "next", "other word": "wrong", "test": "wrong"};

var yourSearchWord = 'keyword';

// Get the key names
var objectKeys = Object.keys(object);

if(objectKeys.indexOf(yourSearchWord) != -1) {
    if(object[yourSearchWord] === 'next') {
        console.log('The value is next');
        // Call your next function
    }
}
0 голосов
/ 30 октября 2019

Ниже приведено представление о том, как решить проблему с помощью метода Object.entries.

const sentence = "This sentence has a keyword";

const object = {"keyword": "next", "other word": "wrong", "test": "wrong"};

const someFunc = () => {
  console.log("function!");
}

Object.entries(object).forEach(([key, val]) => {
  if (sentence.includes(key)) {
    val === "next" ? someFunc() : console.log('here');
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...