0

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

这是代码:

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

4

1 回答 1

3

将您的比较更改为:

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

-1当未找到项目时返回,但-1它是真实的。唯一的虚假数字是0。所以你的比较不会像你期望的那样工作。

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

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

于 2013-05-29T15:28:03.097 回答