2014-10-23 2 views
2

Я пытаюсь сделать что-то вроде этого.toLowerCase в javascript «не функция»?

if (pathArray.toLowerCase().indexOf("blah") != -1{} 

При отладке с консоли я получаю ошибку, что «pathArray.toLowerCase не является функцией». Почему я получаю это сообщение?

+0

является 'pathArray' массив? –

+0

'pathArray', вероятно, не является строкой. Если это массив, вы, вероятно, хотите 'pathArray.some (function (v) {return v.toLowerCase() === 'blah';});'. –

+0

[.toLowerCase()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) является функцией в String.prototype. Скорее всего, ваш 'pathArray' - это другой тип объекта. – dave

ответ

3

toLowerCase() предназначен только для строк, но у меня есть ощущение, что ваш «pathArray» - это, по сути, массив.

> 'hello'.toLowerCase() 
'hello' 
> ['hi', 'bye'].toLowerCase() 
TypeError: undefined is not a function 

Вы пытаетесь проверить, существует ли «бла» в вашем массиве в любой прописной или строчной форме?

+0

Привет, да, это массив, поэтому теперь он чувствует, что он не будет работать. Я пытаюсь сделать indexOf. без учета регистра. – user3482415

+0

В этом случае dfsq дал вам ответ, который вам нужен! S/he выполняет итерацию через массив и делает новый со всеми элементами в нижнем регистре, а затем проверяет «бла». – jdussault

5

toLowerCase - это метод строки. Если вы хотите, чтобы быть в состоянии найти строку в массив, не зная точного случае, если вы можете добавить map шаг цепи:

pathArray.map(function(s) { return s.toLowerCase(); }).indexOf('blah') !== -1 
+0

Спасибо за это! – user3482415

+0

Это должен быть ответ –

1

toLowerCase метод относится к функции Строка прототипа. Поэтому, вероятно, pathArray не является строкой. У меня есть чувство (для его имени), которое является Массивным. В этом случае вам может понадобиться следующий код:

pathArray.forEach(function(item, index){ 
    if(item.toLowerCase().indexOf("blah") != -1){ 
    } 
}); 

Код, предложенный dfsq, также может быть полезен. Это зависит от того, на каком уровне вы хотите выполнить функцию indexOf. В моем случае вы будете выполнять поиск по каждой строке, чтобы найти начальный индекс подстроки «blah». В коде dfsq вы будете искать индекс массива, который содержит всю строку «blah».

0

Да, это массив, поэтому теперь он чувствует, что он не будет работать. Я пытаюсь сделать indexOf. без учета регистра.

Нет необходимости Array#indexOf():

if (pathArray.some(function(v) { return v.toLowerCase() === 'blah';})) 

Array#some() возвращает истину, если для любого элемента обратного вызова возвращает true.

0

Ваша строка, вероятно, находится в индексе 0 массива.

Appling toLowerCase() на 0 индекс должен решить проблему:

pathArray[0].toLowerCase()