Двойная проверка цикла, разной длинны .length
У меня есть 2 массива, первый имеет в себе префиксы, и его длинна: 2, второй уже имеет в себе 10-15 элементов, и его length 10-15 примерно, мне нужно делать проверку если введён один из префиксов из массива "A" и массива "B", но писать так:
const prefixes = ['1', '2'];
const context = [1,2,3,4,5,6,8];
for(i = 0; i < prefixes.length; i++) {
for(k = 0; k < context.length; k++) {
if(msg.txt == `${prefixes[i]} ${context[k]}`) return true;
}
}
Не вариант для меня, сами понимаете что такой код даже визуально выглядить неправильно, скажите пожалуйста, как правильно нужно писать в подобных ситуациях
var msg = prompt();
msg = msg.trim()
var arr_l = ['!к', '.к'];
var arr_r = ['1', '2', '3'];
for(i = 0; i < arr_l.length; i++) {
if(msg == `${arr_l[i]} ${arr_r[i]}`) console.log(true)
else console.warn(false);
}
/*
Не сработает так-как если ввести "!к 3", он попросту не найдет его, так-как индекс i = 2 (его максимум)
*/
Сработало так:
var msg = prompt();
var arr_l = ['!к', '.к'];
var arr_r = ['1', '2', '3'];
var parts = msg.split(' ');
if (arr_l.includes(parts[0]) && arr_r.includes(parts[1])) {
console.log(true)
console.log(msg)
} else {
console.warn(false);
}
(Комментарий ниже)
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
я бы сделал так:
- разбить строку через разделитель (пробел) на 2 части
- проверить, есть ли первая часть в массиве 1
- проверить, есть ли вторая часть в массиве 2
Вам такой код нужен?
const arr_l = ['!k', '.k'];
const arr_r = ['1', '2', '3'];
const parts = msg.split(' ');
if (arr_l.includes(parts[0]) && arr_r.includes(parts[0]))
return true;