Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Foreach数字列表(作为数组)javascript/jquery替代PHP?_Php_Javascript_Arrays - Fatal编程技术网

Foreach数字列表(作为数组)javascript/jquery替代PHP?

Foreach数字列表(作为数组)javascript/jquery替代PHP?,php,javascript,arrays,Php,Javascript,Arrays,我有以下代码,用于生成从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 equ

我有以下代码,用于生成从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循环吗?

作为与PHP代码的比较,standard for loop可以很好地实现这一点,尽管效率很低

for(i=0; i<cells.count; i++) $(".grid .cell:nth-child(" + i.toString() + ")").doAction();

对于(i=0;i这将是您最好的方法:

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)
}
var cellElements=$('.grid').find('.cell');//运行选择器一次,获取所有单元格
对于(变量i=0;i
正如我从
$(“.grid.cell:nth child(“+$cell+”)).doAction();
中了解到的,您正在使用jQuery。如果是这样,您可以使用
$。jQuery公开的每个
迭代器。 例如,您可以执行以下操作:

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

希望这能有所帮助。

学习一门语言的基础知识需要一点个人的努力。问别人不是合适的替代品。从这里开始,你有没有在Javascript中查找循环?对不起,有点拉普苏斯,我在寻找错误的方法,我没有想过js方法。(我知道Javascript)当您使用jQuery时,lxgreen的答案可能就是您想要的。@Boaz:不,lxgreen的答案是反模式的,因为它非常昂贵。您只需选择一次DOM,然后选择单个结果。@系统同意,此解决方案会多次运行选择器,而且根本没有效率。@JAAulde:选择器是无效的循环中。是否不清楚选择器正在运行多次?未来的读者,不要使用这种方法。有更有效的方法可以做到这一点。另一个不应该使用的答案是在StackOverflow上获得多张选票。@OP和投票者似乎都同意该系统。有时该系统似乎实际工作:)@波阿斯:很高兴看到OP改变了公认的答案。坏习惯传播得太快了。哦,我的坏习惯。我只是没有考虑到性能,和“前部”部分有关。当然,选择器应该处理一次。