确定给定数组中索引的组号

Determine group number given an index in an array

假设您有一个大小为 n 的数组,它由 x 组大小为 y 的项目组成。 例如,一个大小为 12 的数组,由 3 组 4 项组成。

x*y = n

给定一个项目的索引 (i),您将如何确定它属于哪个组 (g)?

例如,在上面的数组中,给定的索引为 6(索引从 0 开始)。这意味着它是第二组中的第三项,因此 g = 2。索引 8 将产生 g = 3,因为它是第三组中的第一项。

这个结果(g)的推导公式是什么?

如果我们有 x,y,i 和 n 那么我们可以用下面的公式计算组数。

计算属于哪个组:y/i.

我假设 x,y 和 i 都从 0 开始。

解释:

我们可以这样写: 假设组是 G,k 是某个数字。

y*G+k = i; 这使得, G = i-k/y

这里我们可以忽略k。 最终表达式:G=floor(i/y)

考虑你的例子。 x = 3, y = 4 and i = 6.

G = floor(6/4) = 1.

组数从 0 开始,因此将是第 2 组。

这是我的尝试

let ng = 4 // NO. of groups
let gs = 3 // Group Size
let n = ng * gs

let getGroup = (i) => {
  if (n != 0 && i != 0) {
    let mod = i % gs;
    if (mod == 0) {
      return "group " + i / gs + " | " + "position " + gs
    } else {
      return "group " + (((i - mod) / gs) + 1 )+ " | " + "position " + mod
    }
  }
}

console.log(getGroup(11))