«Нормализовать» HTML-таблицу с помощью rowspan

Есть ли способ определить или рассчитать, можно ли нормализовать HTML-таблицу, используя диапазоны строк, и если да, то каким образом? Или если есть библиотека JavaScript, которая может это сделать.

Например, эта таблица:

+-----------+---------+
| Apple     | Red     |
| Apple     | Green   |
| Apple     | Yellow  |
| Sun       | Yellow  |
| Sun       | Hot     |
| Charizard | Hot     |
| Charizard | Pokémon |
+-----------+---------+

Преобразуется в это:

+-----------+---------+
| Apple     | Red     |
|           | Green   |
|           |---------|
|-----------| Yellow  |
| Sun       |-------- |
|-----------| Hot     |
|           |---------|
| Charizard | Pokémon |
+-----------+---------+

Посмотрите на эту скрипку, чтобы понять, что я имею в виду: http://jsfiddle.net/scorch/LZKkQ/

Некоторые из эти комбинации легко вычислить вручную, но некоторые из них могут быть довольно сложными. Я хотел бы минимизировать таблицу, насколько это возможно, и быть уверенным, что нет другой комбинации, которая могла бы минимизировать ее еще больше. Т.е. желательно только уникальные значения в таблице.

РЕДАКТИРОВАТЬ : Не обращайте внимания на дополнительный столбец в скрипке. Кажется, у Firefox есть некоторые проблемы с rowspan в самом правом столбце, поэтому мне пришлось добавить еще один, чтобы он имел желаемый эффект.

РЕДАКТИРОВАТЬ 2:

Плагин DataTables fnMultiRowspanи fnFakeRowspan, упомянутый ниже, на самом деле не дает желаемых результатов.Оба плагина нуждаются в том, чтобы таблица была предварительно правильно отсортирована для работы; fnFakeRowspanработает только с одним столбцом, а fnMultiRowspanдает следующий результат (горячий и желтый дублируются во втором столбце):

+-----------+---------+
|           | Red     |
| Apple     | Green   |
|           | Yellow  |
|-----------+---------|
| Charizard | Hot     |
|           | Pokémon |
|-----------+---------|
| Sun       | Yellow  |
|           | Hot     |
+-----------+---------+

16
задан Brian Tompsett - 汤莱恩 4 February 2019 в 14:02
поделиться