Если у меня есть массив:

[{month:'January', value:1},{month:'February', value:2}] и так далее, как я могу проверить, включает ли месяц в массиве, например, январь, а затем вернуть 1, февраль вернуть 2 и так далее?

Любое предложение?

0
None 20 Май 2021 в 20:09

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"))
2
dinindu 20 Май 2021 в 17:18

Это то, что вы ищете?
По сути, это поиск без учета регистра.

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);
0
Hamza Khanzada 20 Май 2021 в 17:43
const monthsArray = [{month:'January', value:1},{month:'February', value:2}];
const month = 'Jan';
console.log(monthsArray.find(m => m.month.includes(month)))

(кредит Хамзе Ханзаде в комментарии).

Includes в свойстве String проверит, имеет ли свойство значение, которое вы в нем проверяете, и вернет совпадение или неопределенное значение.

Вы можете использовать это дополнительно с помощью функции-оболочки, как в другом ответе

0
VLAZ 20 Май 2021 в 17:39

Если вы хотите подтвердить, что месяц начинается с

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"));
0
VLAZ 20 Май 2021 в 17:38