如何解决数组索引选择像numpy但在javascript中?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (114)

有一个3x3阵列:

var my_array = [[0,1,2],
                [3,4,5],
                [6,7,8]];

并希望获得它的第一个2x2块(或任何其他2x2块):

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

我会用numpy写的:

my_array = np.arange(9).reshape((3,3))
my_array[:2, :2]

得到正确的结果。

我试过javascript:

my_array.slice(0, 2).slice(0, 2);

但第二个切片影响第一个维度,什么也不做。我注定要用于循环还是有一些新的ES6语法会让我的生活更简单?

提问于
用户回答回答于

可以使用Array.sliceArray.map:

const input = [
  [0, 1, 2],
  [3, 4, 5],
  [6, 7, 8]
];

const result = input.slice(0, 2).map(arr => arr.slice(0, 2));

console.log(result);

用户回答回答于

可以为索引和所需子数组的长度接受对象,然后切片并映射切片子数组

var array = [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
    length = { x: 2, y: 2 },
    indices = { i: 0, j: 0 },
    result = array.slice(indices.i, indices.i + length.x).map(a => a.slice(indices.j, indices.j + length.y));
    
console.log(result);

扫码关注云+社区

领取腾讯云代金券