JavaScript如果变量具有indexOf数组中的项

时间:2013-05-29 15:26:26

标签: javascript arrays

我有一个在页面上动态设置的变量。然后我在数组中有一个颜色列表。我需要查看颜色变量是否包含数组中的一个项目。

以下是代码:

var colorlist = ['Silver', 'Gray', 'Black', 'Red', 'Purple', 'White'];
var col1 = "";
var color1 = 'Titanium Silver';
for (var c = 0; c < colorlist.length; c++) 
{
    if(color1.indexOf(colorlist[c]))
    {
        col1 = colorlist[c];
    }
    else
    {

    }
}

我期望它返回的是“Silver”,但它始终返回数组中的最后一项。我做错了什么?

1 个答案:

答案 0 :(得分:3)

将您的比较更改为:

if(color1.indexOf(colorlist[c]) > -1)
如果找不到某个项目,则会返回

-1,但-1是真的。唯一的假名是0。所以你的比较不会像你期望的那样有效。

看看这个小提琴,它打印indexOf的结果和价值的真实性:http://jsfiddle.net/R3Xb3/

注意第一个如何返回true,因为在字符串中找到“Silver”(在有效索引处)。但是找不到其余的,返回的索引是-1,结果是true