0

我在stackoverflow中遇到了很多问题,但似乎没有一个对我有帮助。我知道有很多这样的帖子,但我需要帮助。

我正在尝试将表的列放入数组中,然后尝试删除重复的元素。这个jsfiddle 说明了这种情况。这是代码:

//sorry for the language 
var days2 = ["Pazartesi", "Salı", "Pazartesi", "Çarşamba"];
var days = jQuery.makeArray($(".dersprg tr td:nth-child(6)"));

//the function works just fine on days2 array, but not on days array
function eliminateRepeat(array){
  var i, j;
  for(i=0 ; i<array.length ; i++){
      for(j=i+1 ; j < array.length ; j++){
          if(array[i] == array[j])
              array.splice(j,1);
       }
  }
}
eliminateRepeat(days);
$(days).clone().appendTo(document.getElementById("test"));

我在这里使用的表有点大,你最好从 jsfiddle 看到它。

注意:我使用了许多函数来回答其他问题,但似乎没有一个对我有用。我最终编写了自己的函数,该函数在基于字符串的数组上运行良好,但是仍然无法使用选定的基于 html 元素的数组完成工作。

4

1 回答 1

1

该函数在 days2 数组上工作得很好,但在 days 数组上却不行

是的,因为元素列表中没有重复项。可能有一些文本相同,但它们是不同的节点,与运算符不相等==。你需要改变

if(array[i] == array[j])

if($(array[i]).text() == $(array[j]).text())

顺便说一句,您splice从数组中删除了一个元素,以便所有索引都发生变化。然而,通过转到下一个索引,您将跳过一个项目。利用array.splice(j--,1);

于 2013-02-08T00:09:35.093 回答