Calculer et définir la valeur de colspan de manière dynamic

J’ai un tableau avec des données redondantes dans les cellules. [Table de gauche]

Je dois les rejoindre dans une cellule. [Table de droite]

Illustration

Structure de la table:

Value1: A A A       B B
Value2:     C C     D  

Je suis capable de cacher la cellule redondante, mais je dois configurer colspan d’une manière ou d’une autre.

 $(document).ready(function () { var all = $('.green'); var seen = {}; all.each(function () { var txt = $(this).text(); if (seen[txt]) { $(this).hide(); } else { seen[txt] = true; } }); }); 

Merci.

 var first; var prev = undefined; var colspan = 1; var setColspan = function () { first.attr('colspan', colspan); colspan = 1; } all.each(function () { var txt = $(this).text(); if (prev === txt) { colspan += 1; $(this).remove(); } else { // doesnt match, set colspan on first and reset colspan counter if (colspan > 1) { setColspan(); } first = $(this); prev = txt; } }); if (colspan > 1) { setColspan(); } 

Pensez qu’il fait ce que vous voulez, vérifie la présence de blocs consécutifs de valeurs de colonne correspondantes; s’il trouve une correspondance, il la supprime. Lorsqu’il ne trouve pas de correspondance et que colspan est suffisamment grand, il définit le colspan au premier rang de la liste, puis réinitialise. . cela ne fonctionne pas si vous avez des valeurs consécutives qui s’étendent sur la fin d’une ligne et au début de la suivante. voudrait le faire ligne par ligne si tel est le cas

mis à jour ci-dessus avec la casse si le dernier ensemble de colonnes est également consécutif. dans ce cas, il ne définirait pas le colspan.

Vous pouvez définir le colspan par,

 var cell=$([selector]); cell.attr('colspan',N); 

puis supprimez les frères et soeurs suivants

 var sib=cell.next(); for(var i=0;i