Сложная таблица, объединяющая алгоритм javascript и jquery

У меня довольно уникальная проблема, которую я не могу решить. У меня есть стол размером 2x3, расположенный, как показано ниже.

_ 1 __ _ _ 2 __
1- | _ __ _ | __ _ _ |
2- | _ __ _ | __ _ _ |
3- | _ __ _ | __ _ _ |

Данные помещаются в ячейки таблицы. Иногда данные в столбце или строке могут совпадать. Например, если (1,1) и (1,2) имеют одинаковые данные. В некоторых случаях (1,1), (1,2) и (1,3) могут иметь одни и те же данные. Если значения в ячейках одинаковые и смежные, их нужно объединить. Например, если (1,1) и (1,2) оба имеют значение «100», две ячейки объединяются. Я сделал это вручную, используя jquery, например:

(1,2).hide();
(1,1).attr("rowspan", "2");

Я скрываю (1,2) ячейку вместо удаления, так как таблицы можно сбросить до исходных 2x3, а затем при необходимости заново заполнить. Вручную это отлично работает, но мне нужен динамический метод. Ниже приводится общая цель того, что необходимо достичь.

  • Если две соседние по вертикали ячейки или три соседние по вертикали ячейки в своих соответствующих столбцах имеют одинаковые значения, то эти ячейки объединяются.
  • Ячейки строк, такие как (1,1) и (2,1), могут содержать повторяющиеся данные и никогда не объединяются.
  • Для справки, группы ячеек, которые можно объединить, следующие: {(1,1), (1,2)}, {(1,1), (1,2), (1,3)} , {(1,2), (1,3)}, {(2,1), (2,2)}, {(2,1), (2,2), (2,3)}, { (2,2), (2,3)}
  • Одновременно может происходить несколько слияний. Например: {(1,1), (1,2)} имеют одинаковые данные, а {(2,1), (2,2), (2,3)} имеют одинаковые данные. Обе группы индивидуально объединены.

Мой главный вопрос: как мне написать алгоритм для этого, не выписывая все возможные ситуации. Может ли кто-нибудь показать мне пример того, что сработает? Я понимаю, что это сложно, поэтому не стесняйтесь задавать вопросы для уточнения. Большое спасибо заранее. Это огромная помощь!

5
задан dremme 7 February 2012 в 18:17
поделиться