【发布时间】:2021-12-26 05:15:15
【问题描述】:
我有一个数组,看起来像这样:
var grid = [
[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],
[0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0]
];
我想计算连续 1 的数量,直到我们达到零为止。然后,如果我们再次命中 1,则再次计算连续出现的次数。
So for grid[0], it should return 9.
For grid[1], it should return [3,3].
grid[2], [2,1,1,2].
作为一个额外的乐趣,我也在尝试为“列”做这件事。 IE。 “1”出现在第 1 列的次数,包括 grid[0][1]、grid[1][1]、grid[2][1] 等。如果有更好的方法来组织数据来实现这一点,我愿意接受建议,因为我总共有 25 行/数组在数组中。
我不确定是否有不涉及反复循环数据的方法。目前我正在这样做:
var guides = [];
for ( var i = 0; i < grid.length; i++ ) {
var row = grid[i];
var chunks = [];
var count = 0;
for (var j = 0; j < row.length; j++ ) {
if ( j === 1 ) {
count++;
} else {
chunks.push(count);
count = 0;
}
}
guides.push(chunks);
}
【问题讨论】:
-
请将您尝试过的代码添加为minimal reproducible example。
标签: javascript arrays multidimensional-array