#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);
});
Надеюсь, это поможет,