Пытаюсь сделать поисковик для своего jsgrid, но столкнулся с проблемой. Как искать текст в верхнем и нижнем регистре?
Потому что теперь я получаю результаты, только если использую те же символы.
loadData: function (filter) {
var ajaxItemsFiltered = [];
$.each(ajaxItems, function (index, value) {
var allow = true;
$.each(value, function (index2, value2) {
if (typeof filter[index2] !== "undefined" && filter[index2] !== '') {
if (value2.indexOf(filter[index2]) === -1) {
allow = false;
}
}
});
if (allow) {
ajaxItemsFiltered.push(value);
}
});
return ajaxItemsFiltered;
},



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Javascript является языком с чувствительным регистром, поэтому вам нужно изменить оба сравниваемых значения на «Верхний» или «Нижний» регистр, чтобы выполнить проверку, не беспокоясь о чувствительности к регистру, например:
if (value2.toLowerCase().indexOf(filter[index2].toLowerCase()) === -1)
//OR
if (value2.toUpperCase().indexOf(filter[index2].toUpperCase()) === -1)
Вы можете использовать Intl.Collator для выполнения сравнений без учета регистра.
const localeCompare = Intl.Collator('en', { sensitivity: 'base' }).compare;
function includesByIgnoreCase(predicate) {
if (this.filter(predicate).length > 0) {
return true;
}
return false;
};
const value2 = ['hElLo', 'world', 'foo', 'Hello Wolrd'];
console.info(
includesByIgnoreCase.call(
value2,
e => localeCompare(e, 'hello world') !== 0
)
);Использованная литература: MDN: Intl.Collator.prototype.compare