.toLowerCase在javascript“不是一个函数”?

时间:2014-10-23 17:35:21

标签: javascript

我试图做这样的事情

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

使用控制台进行调试时,我得到错误" pathArray.toLowerCase不是函数"。为什么我会收到这条消息?

5 个答案:

答案 0 :(得分:5)

toLowerCase是字符串的一种方法。如果您希望能够在不知道具体情况的情况下在数组中查找字符串,则可以向链中添加map步骤:

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

答案 1 :(得分:4)

toLowerCase()仅适用于字符串,但我感觉你的" pathArray"实际上是一个数组。

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

您是否正在检查是否"等等#34;您的数组中是否以任何大写/小写形式存在?

答案 2 :(得分:1)

toLowerCase 方法属于String函数原型。所以pathArray可能不是String。我有一种感觉(因为它的名字)是一个数组。在这种情况下,以下代码可能对您有用:

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

dfsq提出的代码也很有用。这取决于您要执行indexOf函数的级别。在我的例子中,您将对每个字符串执行搜索,以便找到子字符串“blah”的起始索引。在dfsq的代码中,您将查看包含整个字符串“blah”的数组索引。

答案 3 :(得分:0)

  

是的,它是一个数组,所以现在让它变得不起作用。我试图制作indexOf。不区分大小写。

无需Array#indexOf()

if (pathArray.some(function(v) { return v.toLowerCase() === 'blah';}))
如果对于回调返回true的任何元素,

Array#some()将返回true。

答案 4 :(得分:0)

您的String可能位于数组的索引0中。

在0索引上应用toLowerCase()可以解决您的问题:

pathArray[0].toLowerCase()