【问题标题】:Select a 2D array from a 2D array in javascript从javascript中的二维数组中选择一个二维数组
【发布时间】:2013-08-09 17:59:51
【问题描述】:

我想从一个大型二维数组中选择一个二维数组,我知道如何使用 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 循环更好的方法来创建第二个数组?

【问题讨论】:

  • 如果您能以有效的 JavaScript 格式显示数组将会很有帮助。有点难以猜测实际结构是什么。
  • 定义“更有效”。 For 循环似乎很有效,但是我们不知道您使用它来完成什么......例如,将每次访问偏移到原始数组中可能会更有效。
  • 我想我曾经发布过一个几乎与这个问题相同的问题。我会尝试找到我发布的问题,因为它可能在这里有用。

标签: javascript node.js multidimensional-array


【解决方案1】:

与 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 );

请注意缺少边界检查或验证子数组实际上是子数组!

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2021-10-21
    • 2018-11-11
    相关资源
    最近更新 更多