Sto cercando un modo molto performante per ritagliare un array bidimensionale. Considerare questo esempio:'Ritaglia' un array bidimensionale?
Ho una matrice bidimensionale che costituisce una griglia 100x100. Voglio solo restituire solo un ritaglio di esso, 60x60. Ecco un esempio di "un" modo per farlo, ma sto cercando dei puntatori al modo più performante per farlo.
// 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];
}
}
Ogni pensiero molto apprezzato ...
John
Intendevi scrivere 'crop [i] = crop [i] .splice (rect.y, rect.y + rect.h)'? Altrimenti, gli indici vengono appena rimossi dall'array ... –
@FelixKling Yup, grazie. In realtà, ho appena realizzato che avrei dovuto usare 'slice', non' splice'. 'splice' restituisce elementi rimossi. –
Si dovrebbe anche ricordare che questo modificherà l'array originale ... –