-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 中转换 PHP foreach 循环吗?

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

与 php 代码相比,for 循环的标准可以正常工作,尽管效率低下。

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