1

3 で完全に除算されるすべての値に最後を追加しようとしていiますが、インデックス 0 をそれらの 1 つにしたくありません。最初のアイテムを除く3番目のアイテムごとにモジュラスを使用する方法を誰か教えてもらえますか?

((i%3==0) ? 'last' : '');
4

4 に答える 4

6
if (i!=0 && i % 3 == 0) ...

場合によっては、エッジ ケースの包括的ソリューションを見つけようとする代わりに、明示的に 0 を含めたくないと言います。

于 2012-11-21T15:12:39.287 に答える
5

何かのようなもの:

if(i > 0 && i % 3 == 0) {
    // stuff ...
}

最初の要素を除くすべての 3 番目の要素に CSS クラスを適用するだけでよい場合は、次のようにするだけで済みます。

$('.yourClass:nth-child(3n+4)').addClass('newClass');​

デモ: http://jsfiddle.net/uuBzD/

カウントが index から始まる場合0、クラスは要素36などに適用さ9れます。

于 2012-11-21T15:12:37.360 に答える
1

投稿された回答のいくつかを試した後、最も簡単な解決策は、インデックスに 1 を追加して計算を非ゼロベースにすることであることがわかりました。

var isThirdIteration = (i + 1) % 3 === 0;
于 2016-10-25T20:30:14.023 に答える
1

これは単純すぎるように聞こえるかもしれませんが、forループの場合は 1 から数えることができ、反復ごとにチェックする必要はありません (パフォーマンスがわずかに向上します)。

for ( var i = 1; i < arr.length; i++ ) {
  arr[i].className = i % 3 ? "" : "last";
}

classNameそうでない要素にを割り当てる必要がない場合はi %30を使用してパフォーマンスをわずかに改善できますif

for ( var i = 1; i < arr.length; i++ ) {
  if ( !( i % 3 ) ) {
    arr[i].className = "last";
  }
}

もちろん、0 からカウントを開始する必要がある場合は、次のループを使用できます。

for ( var i = 0; i < arr.length; i++ ) {
  if ( !( i % 3 ) && ( i ) ) {
    arr[i].className = "last";
  }
}

i!==0条件が後に置かれる理由i % 3は、最初の条件がより一般的であり、ほとんどすべての反復でチェックする必要があるためです。そのため、すべての反復をやみくもにチェックするよりもパフォーマンスがさらに向上i!==0します。

とにかく、あなた自身のコーディングスタイルで簡単に答えるには:

(i%3==0 && i ? 'last' : '');
于 2012-11-21T15:42:24.270 に答える