Javascript 如何在不使用for语句的情况下生成forloop

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");

我正在为地图开发一个编辑器,我需要让地图编辑器运行得更快,有人告诉我删除每个嵌套的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");
    });
});

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;