как можно сократить этот код?
let profile = message.text;
if (/^(фундаментальная информатика и информационные технологии|профиль 1)$/i.test(profile)) number = 1;
if (/^(строительство|профиль 2)$/i.test(profile)) number = 2;
if (/^(инженер по оборудованию|профиль 3)$/i.test(profile)) number = 3
if (/^(инспектор по технике безопасности|профиль 4)$/i.test(profile)) number = 4;
if (/^(бухгалтерский учёт, анализ и аудит|профиль 5)$/i.test(profile)) number = 5;
if (/^(продавец, контролёр-кассир|профиль 6)$/i.test(profile)) number = 6;
if (/^(современная фотография|профиль 7)$/i.test(profile)) number = 7;
if (/^(звукорежиссура аудиовизуальных искусств|профиль 8)$/i.test(profile)) number = 8;
Ответы (3 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Самое простое сделать карту
const kvArray = [
['(фундаментальная информатика и информационные технологии|профиль 1)', 1],
['(строительство|профиль 2)', 2],
['(инженер по оборудованию|профиль 3)', 3],
// и так далее
]
const myMap = new Map(kvArray);
let profile = '(СТроиТельство|ПРОФиль 2)';
console.log(myMap.get(profile.toLowerCase()));
Если цифры по порядку, то можно даже в простой массив записать и использовать findIndex + 1
const kvArray = [
['(фундаментальная информатика и информационные технологии|профиль 1)'],
['(строительство|профиль 2)'],
['(инженер по оборудованию|профиль 3)'],
// и так далее
]
let profile = '(СТроиТельство|ПРОФиль 2)';
let number = kvArray.findIndex(el => el == profile.toLowerCase()) + 1;
console.log(number);
Автор решения: Pavel Nazarian
→ Ссылка
Ну если строки только такие, то можно
let profile = message.text;
let number = profile[profile.length-2];
Автор решения: Sanya H
→ Ссылка
let profile = message.text;
let find = profile.match(/\s(\d+)\)$/);
let number = find ? find[1] : undefined;