Javascript 如何在不使用for语句的情况下生成forloop
我正在为地图开发一个编辑器,我需要让地图编辑器运行得更快,有人告诉我删除每个嵌套的for循环,在没有for语句的情况下执行它们,有人能指导我如何执行这样的操作吗Javascript 如何在不使用for语句的情况下生成forloop,javascript,Javascript,我正在为地图开发一个编辑器,我需要让地图编辑器运行得更快,有人告诉我删除每个嵌套的for循环,在没有for语句的情况下执行它们,有人能指导我如何执行这样的操作吗 var tiles = []; var draw = 0; var w = 0; var h = 0; $(document).ready(function () { $('#tile-selector img').click(function () { draw = $(this).attr("tile");
var tiles = [];
var draw = 0;
var w = 0;
var h = 0;
$(document).ready(function () {
$('#tile-selector img').click(function () {
draw = $(this).attr("tile");
});
});
function run() {
w = $("#w").val();
h = $("#h").val();
for (var x = 0; x < h; x++) {
tiles[x] = [];
for (y = 0; y < w; y++) {
tiles[y] = [];
$("#box").append("<img src='src/" + draw + ".gif' x='" + x + "' y='" + y + "' height='15' width='15'></img>");
tiles[x][y] = draw;
}
$("#box").append("<br />");
}
$("#box img").click(function () {
$(this).attr("src", "src/" + draw + ".gif");
tiles[$(this).attr("x")][$(this).attr("y")] = draw;
});
}
function end() {
var output = "";
for (var x = 0; x < w; x++) {
for (var y = 0; y < h; y++) {
if (tiles[x][y] > 0) {
output += "tiles[" + x + "+" + y + "*width] =" + tiles[x][y] + ";\r\n";
}
}
}
$("#output").val(output);
}
var tiles=[];
var=0;
var w=0;
var h=0;
$(文档).ready(函数(){
$(“#平铺选择器img”)。单击(函数(){
draw=$(this.attr(“平铺”);
});
});
函数运行(){
w=$(“#w”).val();
h=$(“#h”).val();
对于(var x=0;x );
}
$(“#框img”)。单击(函数(){
$(this.attr(“src”,“src/”+draw+“.gif”);
平铺[$(此).attr(“x”)][$(此).attr(“y”)]=draw;
});
}
函数结束(){
var输出=”;
对于(变量x=0;x0){
输出+=“分幅[“+x+”+“+y+”*宽度]=“+tiles[x][y]+”;\r\n”;
}
}
}
$(“#输出”).val(输出);
}
移除第一个循环并放置平铺[y]=[];在该循环的嵌套循环中
for(var y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
$("#box").append("<img src='src/" + draw +".gif' x='"+ x +"' y='"+ y +"' height='15' width='15'></img>");
tiles[x][y] = draw;
}
$("#box").append("<br />");
}
应该加快速度put
tiles[y]=[]代码>嵌套循环之前的第二个循环中的第一个循环;)在run
方法中更改x和y循环,大多数语言使用row-major-order@Givi,因此删除了我的第一个循环,并放置tile[i]=[];在第一次嵌套之前?是的,除了避免调用太多的append()
,还应该使用事件委派。这就阻止了它运行控制台中的什么?
var box = "";
for(var x = 0; z < w; x++) {
for (y = 0; y < h; y++) {
box += "<img src='src/" + draw +".gif' x='"+ x +"' y='"+ y +"' height='15' width='15'></img>";
tiles[x][y] = draw;
}
box += "<br />";
}
$('#box').append(box);
box = null;