Этот вопрос касается 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.
Потому что вы не прерываете цикл, как только совпадение найдено. Если вы прервете цикл при обнаружении совпадения, вы получите правильный вывод.
Вы можете использовать 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>
Это сделало это. Спасибо!
@AnthonyAlexander Пожалуйста, примите во внимание один из ответов, которые люди сделали для вас, очевидно, когда у вас будет время.
Вы можете использовать немного