在网格 (JS) 中查找列的每个成员的值

Finding value of each member of a column in grid (JS)

本文关键字:成员 查找 网格 JS      更新时间:2023-09-26

我遇到了一些问题,希望有人能提供帮助。我只是JS的初学者,所以这可能有一个非常简单的答案,在我的脑海中。

我有一个可以根据用户指定的行和列动态创建的网格。我有一个行号数组和一个列号数组,并使用以下公式为每个成员分配一个 ID:

index = (maxcols * rownumber) + col;

然后,我向网格的每个成员添加一个 ID,结果如下所示:

1   2   3
4   5   6 
7   8   9 

基本上,我试图找到的是列的每个成员的值,并将其添加到自己的数组中。所以在这种情况下,答案可能是

column1 [1,4,7];
column2 [2,5,8];
column3 [3,6,9];

想要的结果是允许我仅通过拥有成员 ID 来查找相对列。任何朝着正确方向的推动都将是非常棒的。提前感谢!

如果我理解正确,你可以这样做:

var maxcol = 4,
    maxline = 4,
    col = 2,
    line = 3;
var index = (maxcol * line) + col;
var foundCol = index % maxcol; // found the column
var foundLine = (index - col) / maxline; // found the line
console.log(index, foundCol, foundLine);

然后遍历所有索引并将您的值添加到列中。

这有帮助吗?

对qquestion的回答可能在很大程度上取决于您访问网格成员及其框架的方式。

如果不谈论任何与 DOM 相关的方面,例如将列 ID 分配给属性中的网格成员元素或事件处理程序参数,您可以尝试在成员 id 中对 colid 进行编码。同样,如果您拒绝成员 ID 中的字符,则可以按分数对其进行编码:

1.1 2.2 3.3
4.1 5.2 6.3
7.1 8.2 7.3  
index = (maxcols * rownumber) + col + col/10;

1.001 1.002 1.003
2.001 2.002 2.003
3.001 3.002 3.003  
index = row + col/1000;

甚至

1.5 1.(3) 1.25
2.5 2.(3) 2.25
2.5 2.(3) 2.25
index = row + 1/(col+1);

或数字排名(对列和行进行编码,限制为 <100 列):

101 102 103
201 202 203
301 302 303
index = 100*row + col;