【问题标题】:Looping through a table to store the position of a cell循环遍历表格以存储单元格的位置
【发布时间】:2013-07-15 16:30:58
【问题描述】:

我有一个关于循环遍历数据表但不将数据存储在表中的问题;相反,我想将某条数据的位置存储在表中。

我现在使用的是一个 pgm 像素值表,这些像素值被定义为黑色的数字 0 和白色的 255。然后我希望对这张表做的就是循环遍历它并将该像素的位置、行号和列号存储在一个数组中,但前提是该像素显示的值为 255。

我目前没有 pgm 表,所以我将提供这个作为示例。 为了简单起见,您能帮我只记录显示值为 15 的像素的位置吗?非常感谢所有答案:)

P2
# feep.pgm
24 7
15
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

【问题讨论】:

  • 所有代码都可以用JavaScript写吗?

标签: javascript for-loop pgm


【解决方案1】:

你可以这样做:

var locs = [],
    row,
    col,
    pixelData = ...,
    nRows = ...,
    nCols = ...;
for (row = 0; row < nRows; ++row) {
    for (col = 0; col < nCols; ++col) {
        if (pixelData[row][col] == 15) {
            locs.push([row, col]);
        }
    }
}
// now the locs array has all [row,col] locations of pixels with value 15

在上面,pixelData 将是一个行数组,每个行都是一个像素值数组:

var pixelData = [
    [0,  0,  0,  0,  0,  0,  0,  0,  0,  . . .],
    [0,  3,  3,  3,  3,  0,  0,  7,  7,  . . .],
    . . .
];

最后,您应该期望locs 是一个二元素数组的数组,就好像它被初始化为:

var locs = [
    [1, 19], [1,20], [1,21], [1,22], [2, 19], [2,22], ...
];

【讨论】:

  • 谢谢。这似乎很棒。但是对于变量 pixelData,您会将其值声明为什么?
  • @user2517142 - 这应该只是 pgm 像素数据;我发布的代码假定它是一个整数值数组的数组。我假设您已经控制了 pgm 数据的读取,并且您只是在询问收集索引。如果不是,您从什么形式的数据开始?
  • 我们正在使用一个 pgm 文件,它是一个真正的黑白圆形图片。一旦我们能够将像素值放入表格中,我们将使用此代码来查找图片中像素的“坐标”。最后,通过一些数学方程运行这些坐标,以确定图像中圆的中心和半径。
  • @user2517142 - 在我的代码中,pixelData 将是像素值表。
  • 感激不尽。编辑为我清除了这一点。希望你有一个美好的一天。
猜你喜欢
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多