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

标签 javascript jquery

我有以下代码:

var classCode = "";
var colorUsed = [];
var classes = [];
var color = ["yellow", "lightblue", "lightgreen", "pink", "orange", "cyan", "lightgrey", "plum", "wheat", "khaki"];

function colorClass(row) {
  classCode = $(row).html();
  var index = -1;

  if (colorUsed.length != 0) {
    index = classes.indexOf(classCode);
  } else {
    index = -1;
  }

  while (index == -1) {
    colorNum = Math.floor((Math.random() * 10));

    if (!(color[colorNum] in colorUsed)) {
      colorUsed.push(color[colorNum]);
      classes.push(classCode);
      index = 1;
    } else {
      alert("same color!");
      index = -1;
    }
  }

  if (index != -1) {
    colorNum = classes.indexOf(classCode);;
  }

  $(row).css("background-color", colorUsed[colorNum]);
}

   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
	<thead>
  <tr>
    <th>Month</th>
    <th>Savings</th>
    <th>Savings for holiday!</th>
  </tr>
  </thead>
  <tbody>
  <tr><td colspan="3" onclick="colorClass(this);">ClassA</td></tr>
  <tr><td colspan="3" onclick="colorClass(this);">ClassC</td></tr>
  <tr><td colspan="3" onclick="colorClass(this);">ClassD</td></tr>
  <tr><td colspan="3" onclick="colorClass(this);">ClassE</td></tr>
  <tr><td colspan="3" onclick="colorClass(this);">ClassF</td></tr>
  <tr><td colspan="3" onclick="colorClass(this);">ClassG</td></tr>
  <tr><td colspan="3" onclick="colorClass(this);">ClassH</td></tr>
  </tbody>
</table>

我使用“in”函数来避免应用相同的颜色,但它不起作用,我知道还有另一种方法可以使用它来逐个循环元素并进行比较,但我不喜欢使用它。

或者有其他方法可以检测它吗?由于javascript中没有hashset,是否可以在Jquery中实现?

最佳答案

尝试写作

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

作为

if (colorUsed.indexOf(color[colorNum]) == -1) {

希望有帮助:)

关于javascript 无法检测数组中的相同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377203/

相关文章:

javascript - xhtmlrenderer xhtml 到 pdf 字体问题,甚至不能使用字体系列 : Verdana;

javascript - OpenTok 1 的问题 :1 conversations

javascript - Meteor:如何覆盖样板 HTML?

javascript - CSS3 Rotate3d 在所需的方向

Javascript 添加变量并更改事件

javascript - 避免 ajax 调用中的竞争条件

javascript - 尝试使用 formvalidator.net 为 "alpha"编写自定义验证器?

javascript - 删除 Visual Studio Web Developer Express 2012 中的注释代码

javascript - 自动向下滚动聊天 div

javascript - 通过 OnClick 按钮插入 MySQL