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すべてが変更を示すように、配列から1つの要素を削除します。それでも、次のインデックスに移動すると、1つのアイテムを飛び越えることになります。使用するarray.splice(j--,1);

于 2013-02-08T00:09:35.093 に答える