消除从表中提取并插入到数组中的重复元素

时间:2013-02-07 23:58:03

标签: javascript jquery arrays duplicates

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

我正在尝试将表的列添加到数组中,然后我尝试删除重复的元素。 This 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元素的数组完成工作。

1 个答案:

答案 0 :(得分:1)

  

该函数在days2数组上运行正常,但在天数组

上没有

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

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

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

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