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

这是代码:

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”,但它始终返回数组中的最后一项。我究竟做错了什么?

最佳答案

将您的比较更改为:

if(color1.indexOf(colorlist[c]) > -1)


找不到项目时返回-1,但-1是真实的。唯一的假号码是0。因此,您的比较无法按预期进行。

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

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

09-12 06:18