我有一个在页面上动态设置的变量。然后,我有一个数组中的颜色列表。我需要查看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
。