Как перебрать любой массив, чтобы вернуть значение «истина», если какие-либо элементы верны

Этот вопрос касается JavaScript. Если ввод представляет собой любой из следующего массива «привет, привет, йо или эй», я хочу, чтобы значение возвращало true, но оно возвращает только false.

Я пробовал несколько методов, таких как toString(), include() и т. д.

function myFunction() {
  var arr1 = [/hello/i, /\bhi/i, /\bhey/i, /\byo\s/i];
  var b = document.getElementById("input1").value;
  for (i = 0; i < arr1.length; i++) {
    var greeting1 = arr1[i].test(b);
    greeting1.toString()
    document.getElementById("demo").innerHTML = greeting1
  }
}
<input type = "text" id = "input1">
<button type = "submit" onclick = "myFunction()">Test</button>
<p id = "demo"></p>

Я хочу, чтобы значение возвращало true.

Вы можете использовать немного

Code Maniac 10.04.2019 18:32

Потому что вы не прерываете цикл, как только совпадение найдено. Если вы прервете цикл при обнаружении совпадения, вы получите правильный вывод.

Anil Talla 10.04.2019 18:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать Array.prototype.some(), чтобы проверить, соответствует ли хотя бы одно из регулярных выражений. Я немного изменил ваш код, чтобы дать вам пример:

function myFunction(value) {
    var arr1 = [/hello/i, /\bhi/i, /\bhey/i, /\byo\s/i];
    console.info(arr1.some(a => a.test(value)));        
}

myFunction('hello');

Проблема в вашем коде заключается в том, что вы переопределяете текст результатом каждой итерации цикла for.

Одним из решений является break цикл, когда регулярное выражение test() возвращает true:

function myFunction()
{
    var arr1 = [/hello/i, /\bhi/i, /\bhey/i, /\byo\s/i];
    var b = document.getElementById("input1").value;
    var res = false;

    for (i = 0; i < arr1.length; i++)
    {
        res = arr1[i].test(b);

        if (res)
            break;
    }

    document.getElementById("demo").innerHTML = res;
}
<input type = "text" id = "input1">
<button type = "submit" onclick = "myFunction()">Test</button>
<p id = "demo"></p>

Однако вы можете использовать Массив.некоторые() для упрощения кода:

function myFunction() {
  var arr1 = [/hello/i, /\bhi/i, /\bhey/i, /\byo\s/i];
  var b = document.getElementById("input1").value;
  document.getElementById("demo").innerHTML = arr1.some(regexp => regexp.test(b));
}
<input type = "text" id = "input1">
<button type = "submit" onclick = "myFunction()">Test</button>
<p id = "demo"></p>

Это сделало это. Спасибо!

user11341542 10.04.2019 18:54

@AnthonyAlexander Пожалуйста, примите во внимание один из ответов, которые люди сделали для вас, очевидно, когда у вас будет время.

Shidersz 10.04.2019 20:50

Другие вопросы по теме