我有一个在页面上动态设置的变量。然后我在数组中有一个颜色列表。我需要查看颜色变量是否包含数组中的一个项目。
以下是代码:
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”,但它始终返回数组中的最后一项。我做错了什么?
答案 0 :(得分:3)
将您的比较更改为:
if(color1.indexOf(colorlist[c]) > -1)
如果找不到某个项目,则会返回 -1
,但-1
是真的。唯一的假名是0
。所以你的比较不会像你期望的那样有效。
看看这个小提琴,它打印indexOf
的结果和价值的真实性:http://jsfiddle.net/R3Xb3/
注意第一个如何返回true
,因为在字符串中找到“Silver”(在有效索引处)。但是找不到其余的,返回的索引是-1
,结果是true
。