indexOf() в IE 8 и _.indexOf() библиотеки underscore.js — избегайте учета регистра

Я использовал метод indexOf поверх массива в IE 8, и он выдал ошибку (поскольку он не поддерживается). Я решил использовать библиотеку underscore.js. Я использовал _.indexOf(array, value, [isSorted]) из библиотеки underscorejs. Но indexOf() библиотеки underscore.js чувствителен к регистру, но я хочу игнорировать регистр при сравнении значения. Как я могу игнорировать регистр при использовании этой функции.

Я всегда могу использовать цикл for для перебора массива, а затем использовать toLowerCase(), но мне интересно, есть ли готовый метод, который может сделать это для меня.


person SharpCoder    schedule 18.04.2014    source источник
comment
indexOf всегда чувствителен к регистру, но вы можете использовать регулярное выражение с флагом i, чтобы получить совпадения без учета регистра.   -  person adeneo    schedule 18.04.2014
comment
@Teemu: Это именно то, что он сказал в первом предложении???   -  person Bergi    schedule 18.04.2014


Ответы (2)


Я бы посоветовал вам перевести строку в нижний регистр, а затем проверить индекс строки в нижнем регистре.

Нравиться:

"Hi I am string".toLowerCase().indexOf("Hi".toLowerCase());
person Amit Joki    schedule 18.04.2014
comment
ОП запрашивает массив indexOf! - person Bergi; 18.04.2014
comment
@ Берги, но он говорит о чувствительности к регистру !! - person Amit Joki; 18.04.2014
comment
Да, сопоставление без учета регистра вместо ===, которое выполняет Array::indexOf! - person Bergi; 18.04.2014

Я всегда могу использовать цикл for для перебора массива, а затем использовать toLowerCase()

Это в основном путь.

но мне интересно, есть ли готовый метод, который может сделать это для меня.

Нет, но вам не нужно использовать цикл for, если вы используете этот вариант indexOf с обратным вызовом итератора.

Поскольку я не знаю, для чего вам нужен индекс, возможно, _.find или _.some также подойдет вам.

person Bergi    schedule 18.04.2014