javascript - “裁剪”二维数组?

标签 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];
    }
}

非常感谢任何想法......

约翰

最佳答案

这样试试:

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/

相关文章:

javascript - 将列表的数组过滤到jquery中的子数组中

python - 从多维 numpy 数组中选择

java - 从已排序数组的数组中获取 N 个已排序项

javascript - React 是否在连续调用 ReactDOM.render 时应用其协调算法?

javascript - 如何在 jquery 中创建间隔一小时的时间数组?

javascript - 向 promise 链添加附加方法

javascript - jQuery UI Tabs 在选项卡中加载特定链接

PHP MYSQL 数组和排序

php - array_map 在两个不同版本的 PHP 中爆炸时的语法问题

php - 在多个数组中搜索