在jquery中迭代数组

我正在尝试对用户从列表中选择项目进行一些validation。 我想通过检查

  • 是否已经在数组中来确保项目未添加两次。 这就是我正在尝试而且它不起作用。

      $(".List").on("click", "li", function () { var i = 0; var checkArr = []; var div = $("#AddedItems"); var parent = $(this).closest("ul"); var itemtoadd = parent.find("[data-id]").attr("data-id"); var name = parent.find("[data-name]").attr("data-name"); alert(itemtoadd + name);//checking var itemtoadd = ("
  • " + name + "
  • "); checkArr.push(itemtoadd); //put one in to check against? checkArr.forEach(item) { if (item == itemtoadd) alert("this item has already been added"); else { checkArr.push(itemtoadd); alert(itemtoadd); $(itemtoadd).appendTo(div); } } // div.html(itemtoadd); });

    你这里至少有三个问题:

    1. 您没有正确使用Array.forEach – 它需要一个带项目的函数。
    2. 在您进行检查之前,您正在添加您要查找的项目。 您将始终点击alert案例。
    3. 您使用checkArr作为局部变量 – 每次进入函数时都会得到一个空数组。

    总而言之,你可以在不保留arrays的情况下实现目标。 我相信你可以用你的第一个警报取代所有内容:

     if ($('#' + itemtoadd, div).length == 0) { itemtoadd = ("
  • " + name + "
  • "); div.append(itemtoadd); } else { alert("this item has already been added"); }