用javascript从二维数组中选择一个二维数组

Select a 2D array from a 2D array in javascript

本文关键字:二维数组 一个 选择 javascript      更新时间:2023-09-26

我想从一个大的2D数组中选择一个2D数组,我知道如何使用for循环来实现这一点,但我想知道是否有更有效的方法可以实现这一目标。

示例:

[0,0,0,0,0,1,0]
[0,0,0,3,0,1,0]
[0,0,0,0,0,1,0]
[0,0,0,0,0,1,0]

从这个数组中,我想创建一个包含的新数组

[0.0.1]
[3.0.1]
[0.0.1]

那么,有没有比使用一些简单的for循环更好的方法来创建第二个数组呢?

与for循环方法相比,我无法谈论这种技术的相对效率,但可以利用javascript数组的slice函数进行第二维度(而不是第一维度)。

Array.prototype.extract2d = function extract2d( x1, y1, x2, y2 )
{
    var result = [];
    for ( var y = y1; y <= y2; y++ )
    {
        result.push( this[y].slice( x1, x2 ) );
    }
    return result;
}

因此,您可以这样做:

var grid =
[
    [0,0,0,0,0,1,0],
    [0,0,0,3,0,1,0],
    [0,0,0,0,0,1,0],
    [0,0,0,0,0,1,0]
];
var subgrid = grid.extract2d( 3, 0, 5, 2 );

请注意,没有边界检查或验证子数组实际上是子数组!