-3

私は1から20まで混合された数のリストを生成するためにこのコードを持っています:

var cells = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
cells.sort(function(a,b){
    return Math.floor(Math.random()*3 - 1);
});  

次に、配列を解析して、番号ごとにアクションを実行する必要があります。PHPでは次のようにします。

// PHP loop that I know... I need a javascript equivalent..
foreach($cells as &$cell) {

  // Javascript code, that I need to run
  $(".grid .cell:nth-child(" + $cell + ")").doAction();

}

誰かがJSでPHPforeachループを変換する方法を知っていますか?

4

3 に答える 3

4

これは本当にあなたの最善のアプローチです:

var cellElements = $('.grid').find('.cell'); // Run the selector once, and get all cells

for (var i = 0; i < cells.length; i++) {
    cellElements.eq(cells[i]).doAction(); // Now just pick from the subset (this is a quick array access)
}
于 2013-02-21T20:12:18.180 に答える
2

私が理解しているように$(".grid .cell:nth-child(" + $cell + ")").doAction();、あなたはjQueryを使用しています。その場合、$.eachjQueryが公開するイテレータを使用できます。たとえば、次のようなことができます。

    $.each(cells, function(index, value){
        $(".grid .cell:nth-child(" + value + ")").doAction();
    });

お役に立てれば。

于 2013-02-21T20:18:37.167 に答える
1

標準のforループは、非効率的ですが、phpコードとの比較としてこれには問題なく機能します。

for(i=0; i<cells.count; i++) $(".grid .cell:nth-child(" + i.toString() + ")").doAction();
于 2013-02-21T20:08:28.807 に答える