L oop через множество массивов в javascript - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь выполнить поиск по трем различным массивам строк в Javascript, ища имя (предоставленное пользователем), и, если это имя найдено, я должен вернуть, в каком массиве оно находится.

Примерно так: HTML

let users = ['mario', 'gianni', 'pinotto'];
let admins = ['moana', 'cicciolina', 'selen'];
let mods = ['frodo', 'sam', 'bilbo'];

const form = document.querySelector('form');
const btnNome = document.querySelector('#nome');
let risp = document.querySelector('#risposta');

function search() {

  risp.innerText = '';
  let nome = btnNome.value.trim();

  for (i = 0; i < mods.length; i++) {
    if (nome == mods[i]) {
      risposta.innerText += `${nome} is a moderator`;
      break;
    } else if (i == users.length - 1) {
      for (i = 0; i < admins.length; i++) {
        if (nome == admins[i]) {
          risposta.innerText += `${nome} is an admin`;
          break;
        } else if (i == users.length - 1) {
          for (i = 0; i < users.length; i++) {
            if (nome == users[i]) {
              risposta.innerText += `${nome} is a registered user`;
              break;
            } else if (i == users.length - 1) {
              risposta.innerText += `${nome} NON è registrato`;
              break;
            }
          }
        }
      }
    }
  }
  form.reset();
};
<form>
  <label for="text">Insert name</label>
  <input id="name" type="text" name="text" required/>
  <input type="button" onClick="search()" value="search">
</form>

НО не работает и зависает браузер. Я думаю, что я что-то ошибся, создавая бесконечное ... oop ... какие-нибудь идеи? спасибо

СПАСИБО всем за ваши ответы, которые были очень полезны.

Ответы [ 3 ]

0 голосов
/ 18 марта 2020

Вы можете использовать метод массива includes, чтобы найти, существует ли элемент в массиве:

let users = ["mario", "gianni", "pinotto"];
let admins = ["moana", "cicciolina", "selen"];
let mods = ["frodo", "sam", "bilbo"];

const form = document.querySelector("form");
const btnNome = document.querySelector("#nome");
let risp = document.querySelector("#risposta");

function search() {
  risp.innerText = "";
  let nome = btnNome.value.trim();

  checkWithArray(nome, "user", users);
  checkWithArray(nome, "admin", admins);
  checkWithArray(nome, "moderator", mods);

  form.reset();
}

function checkWithArray(searchName, title, arr) {
  const isFound = arr.includes(searchName);

  if (isFound) {
    let text;

    switch (title) {
      case "user":
        text = `${searchName} is a registered user`;
        break;
      case "admin":
        text = `${searchName} is an admin`;
        break;
      case "moderator":
        text = `${searchName} is a moderator`;
        break;
    }

    risp.innerText += text;
  } else {
    risp.innerText += `${searchName} NON è registrato`;
  }
}


0 голосов
/ 18 марта 2020

User Object.entries, поиск и включает методы

let users = ["mario", "gianni", "pinotto"];
let admins = ["moana", "cicciolina", "selen"];
let mods = ["frodo", "sam", "bilbo"];

const data = { users, admins, mods };

const search = str => {
  const found = Object.entries(data).find(([key, arr]) => arr.includes(str));
  return found ? found[0] : "";
};

const key = search("sam");
const row = data[key];

console.log(`sam found in ${key} and array is ${row}`);
0 голосов
/ 18 марта 2020

Попробуйте это

let users = ['mario', 'gianni', 'pinotto'];
let admins = ['moana', 'cicciolina', 'selen'];
let mods = ['frodo', 'sam', 'bilbo'];

const form = document.querySelector('form');
const btnNome = document.querySelector('#nome');
let risp = document.querySelector('#risposta');

function search() {

  let searchName = btnNome.value;
  risp.innerHTML = 
    checkWithArray(searchName, 'user', users) +
    checkWithArray(searchName, 'admin', admins) +
    checkWithArray(searchName, 'mod', mods);
  console.log(searchName);

  form.reset();
};

function checkWithArray(searchName, title, arr) {
  if (arr.indexOf(searchName) > -1) {
    return `${searchName} is ${title}. `;
  }
  return '';
}
<form>
  <label for="text">Insert name</label>
  <input id="nome" type="text" name="text" required/>
  <input type="button" onClick="search()" value="search">
  <label id="risposta"></label>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...