Как проверить элементы массива на наличия определенных элементов?

Как проверить элементы массива на наличия нужного содержимого

Массив: arr ['3' , '*' , 'IV']
Массив состоит из строк.

arr [0] и arr [2] - могут содержать только арабские (1,2,3,4,5…) либо римские числа (I,II,III,IV,V…)
arr [1] может содержать только операторы - * , / , + , -
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 3
dollar
@dollar
Делай добро и бросай его в воду.
С помощью регулярный выражений:
arr = ['3' , '*' , 'IV'];
let r_num = /^(?:\d+|[IVXLC]+)$/;    //либо арабское, либо римское число
let r_sig = /^[*\/]$/;               //знак умножения или деления

if (arr[0].match(r_num) && arr[1].match(r_sig) && arr[2].match(r_num)) {
  console.log("Условие выполнено!");
} else {
  console.log("Ошибка!");
}
Ответ написан
Seasle
@Seasle Куратор тега JavaScript
/\d+/.test(arr[0]);
/[\-\+\*\/]/.test(arr[1]);
/[IVXLCDM]+/.test(arr[2]);
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Число арабскими цифрами проверить через Number(num_string)

Число римскими лучше проверять готовой библиотекой, например sguest/RomanJS – т.к. одного наличия правильных символов не достаточно. Римские числа можно записать разными способами:
  • заглавными IX
  • маленькими ix
  • специальными Unicode-символами: Ⅸ (это один символ)
Правильными буквами можно записать неправильное число "IMIVIIIIIII"

Знаки операций проще всего, там подойдёт регулярное выражение /^[\*\/\+-]$/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы