how to find if it contains text inside an array in javascript

3

I've created two arrays, one with questions and one with answers.

Follow the template.

perguntas[0] = "que sao dinossauros";
respostas[0] = ["Constituem um grupo de diversos animais membros do clado Dinosauria"];

perguntas[1] = "tipos de dinossauros que existiram";
respostas[1] = ["Terópodes, Saurópodes, Ceratopsídeos, Ornitópodes, Estegossauros, Anquilossauros,Paquicefalossauros"];

Well, I need to make sure that I find out if a given text is contained in that array, knowing what position it found, so I can return a response.

I tried the following way.

 if( $.inArray(pergunta, perguntas[i]) !== -1 ){
                alert("encontrei");
            }else{
                alert("não encontrado");
            };

So it works, but I need to figure out which position was found to send a return.

I created a replay to identify where it was found, but it never finds the text.

for(var i = 0; i < perguntas.length; i++){

            if( $.inArray(pergunta, perguntas[i]) !== -1 ){
                alert("encontrei");
            }else{
                alert("não encontrado");
            };
        }

Thank you

    
asked by anonymous 24.05.2017 / 16:52

2 answers

3

To search for the question and display its response, simply use indexOf in the list of questions to get the position of the question in the list and display its response used respostas[index] . See the example:

// Objetos de manipulação do DOM -------------------------------------------------------
const lista    = document.getElementById("perguntas"),
      pergunta = document.getElementById("pergunta"),
      resposta = document.getElementById("resposta"),
      button   = document.getElementById("perguntar");
      
// Lista de perguntas e respostas ------------------------------------------------------
const perguntas = [],
      respostas = [];

// Adiciona-se as perguntas e respostas ------------------------------------------------
perguntas.push("O que são dinossauros?");
respostas.push("Constituem um grupo de diversos animais membros do clado Dinosauria");

perguntas.push("Quais os tipos de dinossauros que existiram?");
respostas.push("Terópodes, Saurópodes, Ceratopsídeos, Ornitópodes, Estegossauros, Anquilossauros,Paquicefalossauros");

perguntas.push("Onde é que eu tô? Será que tô na alagoinha?");
respostas.push("Não, você está no Stack Overflow em Português.");

// Exibe as perguntas para o usuário ---------------------------------------------------
// Não é necessário para a resolução da pergunta, mas ajuda o usuário.
for (let i in perguntas)
{
  let li = document.createElement("li");
  li.innerHTML = perguntas[i];
  
  li.onclick = function (event) {
    pergunta.value = perguntas[i];
  }
  
  lista.appendChild(li);
}

// Evento de click do botão ------------------------------------------------------------
button.onclick = function (event) {

  // Procura a pergunta na lista de perguntas:
  let index = perguntas.indexOf(pergunta.value);
  
  // Se encontrar, exibe a resposta, caso contrário exibe a mensagem de erro:
  resposta.innerHTML = (index >= 0) ? respostas[index] : "Pergunta não encontrada";
};
li {
  cursor: pointer;
}
<ul id="perguntas"></ul>

<input id="pergunta" type="text">
<button type="button" id="perguntar">Perguntar</button>

<div id="resposta"><div>
    
24.05.2017 / 17:11
2

You can loop through the response array using forEach and save the position when you find:

var perguntas = [],
  respostas = [];
perguntas[0] = "que sao dinossauros";
respostas[0] = "Constituem um grupo de diversos animais membros do clado Dinosauria";

perguntas[1] = "tipos de dinossauros que existiram";
respostas[1] = "Terópodes, Saurópodes, Ceratopsídeos, Ornitópodes, Estegossauros, Anquilossauros,Paquicefalossauros";

var respondido = "Anquilossauros";
var idx;
respostas.forEach(function(item, i) {
  if (item.indexOf(respondido) > -1) 
    idx = i;
});

if (idx) {
  console.log('A resposta está na posição: ' + idx);
}

I exemplified an answer to the question types of dinosaurs that existed .

    
24.05.2017 / 16:57