Foreach数字列表(作为数组)javascript/jquery替代PHP?
我有以下代码,用于生成从1到20混合的数字列表: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
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改变了公认的答案。坏习惯传播得太快了。哦,我的坏习惯。我只是没有考虑到性能,和“前部”部分有关。当然,选择器应该处理一次。