Как я могу определить единицы измерения в строке?

#javascript #string #algorithm #search

#javascript #строка #алгоритм #Поиск

Вопрос:

У меня проблема с поиском по строке. В моем приложении мне нужно отобразить некоторые разделы внутри единиц. Названия тем такие:

 "Unit 1: First lesson"
"Unit 2 and 3: Introduction"
"Unit 4: Exercise"
"Unit 5 and 6: Social Networking"
 

Как и следовало ожидать, мне нужно отобразить первый раздел в блоке 1, а второй раздел — в блоках 2 и 3.
Но я понятия не имею, как я могу определить, к какой единице относятся темы.
Если у вас есть хорошая идея, пожалуйста, помогите мне.

Комментарии:

1. Какой ожидаемый результат?

2. Если я ввожу номер единицы измерения, мне нужно получить соответствующую тему. Например, если я введу 3, я получу вторую тему.

3. Это внутри массива?

4. у вас также есть диапазоны… например, «Блок 7-10: текст»

5. Не диапазоны. объединяйте единицы измерения только с помощью ‘и’. И, конечно, темы хранятся в массиве.

Ответ №1:

Вы можете извлечь числа с помощью регулярного выражения и сопоставить.

Следующий код создает массив объектов, который содержит заголовок темы и единицы, к которым он принадлежит

 const topics = [
    "Unit 1: First lesson",
    "Unit 2 and 3: Introduction",
    "Unit 4: Exercise",
    "Unit 5 and 6: Social Networking"
];

const topicUnits = topics.reduce((acc, t) => {
    acc.push({ 
       topic: t,
       units: t.split(":")[0].match(/d/g)
    })
   
    return acc;
}, [])

console.log(topicUnits) 

Ответ №2:

Вы можете получить их с помощью match() :

 const units = [
  "Unit 1: First lesson",
  "Unit 2 and 3: Introduction",
  "Unit 4: Exercise",
  "Unit 5 and 6: Social Networking"
];

units.forEach(title => {
  // Only match on string before the ':'
  let unitNumbers = title.substr(0, title.indexOf(':')).match(/([0-9] )/g);
  console.log(title, unitNumbers);
}); 

Надеюсь, это поможет,