1

可変数のセルを持つ html テーブルがあります。この例では、20x20 とします (かなり大きいですが)。

これは php を介して生成され、テーブルに入力するデータセットは mysql から取得されています。これらのセルにはそれぞれ数値があり、特定の場所に配置する必要があります。したがって、セル A(10,15) の値が 100 の場合、その 100 は特に 10,15 にある必要があります。また、テーブルが生成されている間、位置を分析する方法がありません。

現在、これらのセルの多くには、同じ値を持つ他の隣接セルがあります。横向きでも縦向きでも構いません。

私がする必要があるのは、同じ値を持つこのテーブルの隣接するセルをマージすることです。これは、水平、垂直、またはその両方である可能性がありますが、それでも長方形のままです。

たとえば、私が持っている場合

0 1 1 1 0
2 2 5 0 4
5 5 5 1 4

値に基づいて colspan および/または rowspan を変更する必要があります。注意すべきは、生成時に、これらのセルごとにクラスまたは ID を実際に定義できることです。また、生成中に、連続して複数のシリーズが存在するかどうかを識別できますが、下の行に 1 つ存在するかどうかを知る方法はありません。

ps: 少し調べてみたところ、このスレッドを見つけました。 javascript と jquery アルゴリズムをマージする複雑なテーブル

セルの colspan と rowspan の両方に影響するように jsfiddle の例を変更しましたが、2 つ以上のセルをマージする必要がある場合は反転するようです-

この問題に関する提案されたアプローチは何ですか?

前もって感謝します

4

1 に答える 1

1

2つのパス(O(n2))でそれを行い、最初に配列を幅でトラバースし、隣接するセルの数を検出します(同じセルの後のセルにゼロを設定します):

0(1) 1(3) 1(0) 1(0) 0(1)
2(2) 2(0) 5(1) 0(1) 4(1)
5(3) 5(0) 5(0) 1(1) 4(1)

次に、それを垂直にトラバースし、両方の数値が同じ (およびカウント > 0) のセルを見つけると、次のようになります。

0(1,1) 1(3,1) 1(0,0) 1(0,0) 0(1,1)
2(2,1) 2(0,0) 5(1,0) 0(1,1) 4(1,2)
5(3,1) 5(0,0) 5(0,0) 1(1,1) 4(1,0)

ここで、ペアの最初の数値は colspan で、2 番目の数値は rowspan です。数値の 1 つが 0 の場合、出力しません。

0 1---- 0
2-- 5 0 4
5---- 1 |
于 2012-07-06T13:26:20.390 に答える