我正在寻找一种高效的方法来裁剪二维数组。考虑这个例子:
我有一个构成 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];
}
}
非常感谢任何想法......
约翰
最佳答案
这样试试:
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);
}
请注意,数组的维度现在是 rect.w
x rect.h
,并且所有索引都由 rect.x
负偏移> 和 rect.y
分别。
关于javascript - “裁剪”二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378359/