javascript无法在数组中检测到相同的元素

javascript无法在数组中检测到相同的元素,javascript,jquery,Javascript,Jquery,我的代码如下: var classCode=”“; var colorUsed=[]; var类=[]; var颜色=[“黄色”、“浅蓝色”、“浅绿色”、“粉色”、“橙色”、“青色”、“浅灰色”、“李子色”、“小麦色”、“卡其色”]; 函数colorClass(行){ classCode=$(row.html(); var指数=-1; 如果(colorUsed.length!=0){ index=classes.indexOf(类代码); }否则{ 指数=-1; } 而(索引==-1){ co

我的代码如下:

var classCode=”“;
var colorUsed=[];
var类=[];
var颜色=[“黄色”、“浅蓝色”、“浅绿色”、“粉色”、“橙色”、“青色”、“浅灰色”、“李子色”、“小麦色”、“卡其色”];
函数colorClass(行){
classCode=$(row.html();
var指数=-1;
如果(colorUsed.length!=0){
index=classes.indexOf(类代码);
}否则{
指数=-1;
}
而(索引==-1){
colorNum=Math.floor((Math.random()*10));
如果(!(colorUsed中的颜色[colorNum]){
colorUsed.push(color[colorNum]);
classes.push(类代码);
指数=1;
}否则{
警告(“相同颜色!”);
指数=-1;
}
}
如果(索引!=-1){
colorNum=classes.indexOf(classCode);;
}
$(行).css(“背景色”,colorUsed[colorNum]);
}

月
储蓄
度假储蓄!
甲级
C类
D类
等级
F类
类别G
一流的

您可以将对象用于
colorUsed

var colorUsed = {};

// assign
colorUsed[color[colorNum]] = true;

// test, as you already had
if (!(color[colorNum] in colorUsed)) {

// test, shorter
if (!colorUsed[color[colorNum]]) {
试着写

if (!(color[colorNum] in colorUsed)) {
作为


希望有帮助:)

我写这个答案是为了对已经给出的答案进行解释:

在javascript中,数组是将整数键(从0开始)映射到其值的对象

在数组上使用
in
运算符不是您想要的。这将检查数组中是否存在属性(因为它是一个对象)。对于数组属性,如
length
,对于继承属性,如
toString
,对于数组键,如
0
,如果数组的大小大于1,则为
true
。 它不会使用数组的值计算为
true
,除非数组包含像“length”这样的奇怪值


如果你想寻找一个值,你可以像其他人建议的那样使用
colorUsed.indexOf
,或者使用另一种结构,比如javascript对象形式的散列。

jQuery==javascript。查看
Array.indexOf()
-这将消除在
@Utkanos javascript!==jQuery,因此询问jQuery中是否有帮助的方法是一个有效的问题。您需要
indexOf()
,而不是
中的
。您的代码很可能会抛出至少一个语法错误,因为
中的
不打算像您这样使用
if (colorUsed.indexOf(color[colorNum]) == -1) {