-1

私は次のHTMLを持っています

<input type="hidden" name="product_id" value = "1" class="product_id" />
<input type="hidden" name="product_id" value = "2" class="product_id" />
<input type="hidden" name="product_id" value = "5" class="product_id" />
<input type="hidden" name="product_id" value = "1" class="product_id" />
<input type="hidden" name="product_id" value = "2" class="product_id" />
<input type="hidden" name="product_id" value = "2" class="product_id" />

どうすれば要素の(要素の一意の値)をcount取得できますか?Unique

これは可能without loopingですか?

期待される結果 :

UNIQUE ID  COUNT
-----------------
  1          2  
  2          3
  5          1

私が試したのは以下のようなものですが、このアプローチの問題は、すべての要素をループすることです。最初の反復でのカウントを理解できることがわかるようにproduct_id1同じ要素を持つ他の要素をスキップする必要がありますproduct_id。私はたくさんの要素を持っています、そして私はすべての要素をループすることを好みません。

$(".product_id").each( function(){

  //CHECK THE COUNT AND SAVE IT TO SOME ARRAY

});

アップデート :

反対票を投じても大丈夫ですが、その反対票にコメントを付けると非常に役立ちます。ループについて具体的に説明したのはwithout、jQueryの強力なCSSセレクターで可能になる場合があるからです。

4

2 に答える 2

3

オブジェクトをキー->カウントペアとして使用して値を累積できますが、明示的なループまたは次のようなヘルパー関数を使用するかどうかに関係なく、要素をループせずに行うことはできません.each

var count = {};
$('.product_id').each(function() {
    count[this.value] = count[this.value] + 1 || 1;
});

次に、カウントされた値を反復処理するために、もう一度ループする必要があります。

jQueryセレクターを使用して、同じ値に一致するすべての要素をカウントすることはできますが、実際には、すべての要素を反復処理するよりも大幅に効率が低下します。ここに示されているコードはO(n)ですが、新しい一意の値をそれぞれ見つけて、それが発生する回数をカウントする代替アルゴリズムは、およそO(n ^ 2)になります。

于 2013-03-26T19:07:12.427 に答える
0

カウントする値を使用して、すべての入力の長さを取得します。

$("input[value='1']").length;

これは、値がわかっている場合にのみ機能します

于 2013-03-26T19:03:16.420 に答える