我有一个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);
但是第二个切片影响第一个维度,什么也不做。我是注定要使用for循环,还是有一些新的ES6语法可以让我的生活变得更简单?
发布于 2018-10-06 01:12:01
可以使用Array.slice
和Array.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);
发布于 2018-10-06 01:11:51
您可以使用.map()
和.slice()
方法:
var my_array = [[0,1,2],
[3,4,5],
[6,7,8]];
var result = my_array.slice(0, 2).map(a => a.slice(0, 2));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2018-10-06 01:13:38
您可以将对象作为索引和所需的子数组的长度。然后切片并映射切片的子数组。
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);
https://stackoverflow.com/questions/52670377
复制相似问题