Dig*_*ohn 5 javascript arrays multidimensional-array
我正在寻找一种高效的方式来裁剪二维数组.考虑这个例子:
我有一个二维数组,组成一个100x100网格.我只是想回报一下,60x60.这是一个'a'方法的例子,但我正在寻找指向最有效的方法.
// Settings
var gridWidth = 100;
var gridHeight = 100;
// Populate Grid
var grid = [];
for(var i = 0; i<gridWidth; i++){
grid[i] = [];
for(var j = 0; j<gridHeight; j++){
grid[i][j] = 0;
}
}
// Crop Grid
var rect = {x:20,y:20,w:60,h:60};
var crop = [];
for(var i = rect.x; i<rect.x+rect.w; i++){
crop[i-rect.x] = [];
for(var j = rect.y; j<rect.y+rect.h; j++){
crop[i-rect.x][j-rect.y] = grid[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法都非常感谢......
约翰
试试这样:
crop = grid.slice(rect.x, rect.x+rect.w);
for(var i = 0; i<crop.length; i++){
crop[i] = crop[i].slice(rect.y, rect.y+rect.h);
}
Run Code Online (Sandbox Code Playgroud)
请注意,数组的维度现在为rect.wx rect.h,并且所有索引分别负偏移rect.x和rect.y。