Если у меня есть массив:
[{month:'January', value:1},{month:'February', value:2}]
и так далее, как я могу проверить, включает ли месяц в массиве, например, январь, а затем вернуть 1, февраль вернуть 2 и так далее?
Любое предложение?
4 ответа
Это то, что вы хотите? Вы можете создать регулярное выражение и протестировать его.
Если ваш поиск должен быть нечувствительным к регистру, измените RegExp следующим образом:
const pattern = new RegExp("^" + month, 'i');
const array = [{
month: 'January',
value: 1
}, {
month: 'February',
value: 2
}];
function findValue(month) {
const pattern = new RegExp("^" + month);
const m = array.find(c => pattern.test(c.month));
return m && m.value || null;
}
console.log(findValue("Jan"))
console.log(findValue("Feb"))
Это то, что вы ищете?
По сути, это поиск без учета регистра.
let monthToFind = 'jan';
let input = [{month:'January', value:1},{month:'February', value:2}];
let result = input.find(x => x.month.toLowerCase().includes(monthToFind.toLowerCase()))?.value;
console.log(result);
const monthsArray = [{month:'January', value:1},{month:'February', value:2}];
const month = 'Jan';
console.log(monthsArray.find(m => m.month.includes(month)))
(кредит Хамзе Ханзаде в комментарии).
Includes
в свойстве String проверит, имеет ли свойство значение, которое вы в нем проверяете, и вернет совпадение или неопределенное значение.
Вы можете использовать это дополнительно с помощью функции-оболочки, как в другом ответе
Если вы хотите подтвердить, что месяц начинается с
const months = [{
month: 'January',
value: 1
}, {
month: 'February',
value: 2
}];
function matchMonth(intialsMonth) {
return months.find(res => res.month.toLowerCase().startsWith(intialsMonth.toLowerCase())).value;
}
console.log(matchMonth("Jan"));
console.log(matchMonth("Feb"));
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.