JavaScript if变量具有数组中某项的索引

JavaScript if变量具有数组中某项的索引,javascript,arrays,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(col

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

代码如下:

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
    {

    }
}
var colorlist=[“银”、“灰”、“黑”、“红”、“紫”、“白”];
var col1=“”;
var color1=‘钛银’;
对于(var c=0;c

我希望它返回的是“银”,但它始终返回阵列中的最后一个项目。我做错了什么?

将比较改为:

if(color1.indexOf(colorlist[c]) > -1)
-1
在未找到项时返回,但
-1
是真实的。唯一错误的数字是
0
。所以你的比较不会像你预期的那样有效

看看这把小提琴,它会打印
索引of
的结果和值的真实性:


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

将比较更改为:

if(color1.indexOf(colorlist[c]) > -1)
-1
在未找到项时返回,但
-1
是真实的。唯一错误的数字是
0
。所以你的比较不会像你预期的那样有效

看看这把小提琴,它会打印
索引of
的结果和值的真实性:


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

,那么为什么OP的循环会返回最后一个元素呢?@tymeJV因为数组中的其余项将返回
-1
,这是真实的。OP不会在循环中中断,所以它会继续对我进行设置!我怎么会错过那部分!当我长时间盯着同一个代码看时,就会发生这种情况。谢谢那么OP的循环为什么会返回最后一个元素呢?@tymeJV因为数组中的其余项将返回
-1
,这是真实的。OP不会在循环中中断,所以它会继续对我进行设置!我怎么会错过那部分!当我长时间盯着同一个代码看时,就会发生这种情况。谢谢如果您使用的是字符串,请记住IEI在IE7+中进行了测试,并且一切正常。@NicoSantangelo:它没有
Array.indexOf
,但是
string.indexOf
很好。没错,我试着说您应该小心数组,并写了一些胡言乱语。我的坏处如果你使用的是字符串,请记住IEI在IE7+中测试过,而且一切都很好。@NicoSantangelo:它没有
数组。indexOf
,但是
字符串。indexOf
很好。没错,我试着说你应该小心数组,而且写得乱七八糟。我的错