0

m行を持つn列のテーブルがあります。行内の各セル間の同等性を確認したい。私の考えは、各値を2次元配列に格納し、「forループ」を実行して値が等しいかどうかを確認することですが、解決策は効率的ではないと思います。また、セルの値を nth-child セレクターで保存し、それらを一時配列に入れています。もっと速くて簡単な解決策を知っている人はいますか? 各列の m 値を比較する必要があり、値が異なる場合は、テーブルから行を削除する必要があります。

例えば:

ここに画像の説明を入力

「相違点の確認」機能を実行すると、結果は次のようになります。

ここに画像の説明を入力

テーブルはdivで構築されています

<div class="provider">
    <div class="row">1000</div>
    <div class="row">1500</div>
    <div class="row">1120</div>
</div>
<div class="provider">
    <div class="row">1000</div>
    <div class="row">1200</div>
    <div class="row">1120</div>
</div>
<div class="provider">
    <div class="row">2200</div>
    <div class="row">1700</div>
    <div class="row">1120</div>
</div>
<div class="provider">
    <div class="row">3700</div>
    <div class="row">3300</div>
    <div class="row">1120</div>
</div>

そしてjsの部分:

for(j = 0; j < rowsCounter; j++) {
    for (i = 0; i < colsCounter; i++) {
        buf[j][i] = $('.provider:nth-child(' + i + ') div:nth-child(' + j + ')').text();
    }
}

次の部分はほぼ同じですが、buf 配列を実行し、値の等価性をチェックします..

4

3 に答える 3

0

よりスケーラブルなアプローチを得るには、次のようなものを使用できます。

var buf=[];

$('.provider').each(function(){
    var rows=[];
    $('.row', this).each(function(){
        rows.push( parseInt( $(this).text().trim() ));
    });
    buf.push(rows);
});

理想的には、「すべての子」または「どこかにあるすべての何か」が、処理したい要素の一部であると想定しないでください。最善の方法は、必要な要素を正確に把握することです。その場合、.rowネストされているものはすべて.provider.

この動作中のFIDDLEを見てください。

于 2013-07-23T22:19:05.340 に答える