获取分块数组中项的组索引的算法
Algorithm to get group index of item in chunked array
所以我有一个任意的项目数组:
array = [0,1,2,3,4];
当它被分块时,它看起来像:
array.chunk(2) => [[0,1],[2,3],[4]];
array.chunk(3) => [[0,1,2],[3,4]];
我想要的是一种根据组大小获取索引所在组的索引的算法。
例如,运行 array
中每个元素的算法将产生:
array.chunkIndex( chunkSize = 2, index = n )
0 => 0
1 => 0
2 => 1
3 => 1
4 => 2
array.chunkIndex( chunkSize = 3, index = n )
0 => 0
1 => 0
2 => 0
3 => 1
4 => 1
因此 运行 chunkSize = 1 索引的算法将始终生成原始索引。
我该怎么做?明确地说,我不想对数组进行分块,只要确定它将在哪个组中,如果可能的话,没有循环也没有内置函数。
floor(index / chunkSize)
应该可以!
也在伪代码中:
chunkIndex = index / chunkSize
这是简单的整数除法,这意味着您必须注意的唯一情况是 return 会 float/decimal/real 的语言。对于这些情况,您将需要一个 floor
函数来仅查找结果的整数部分。您可能还希望处理负值。
所以我有一个任意的项目数组:
array = [0,1,2,3,4];
当它被分块时,它看起来像:
array.chunk(2) => [[0,1],[2,3],[4]];
array.chunk(3) => [[0,1,2],[3,4]];
我想要的是一种根据组大小获取索引所在组的索引的算法。
例如,运行 array
中每个元素的算法将产生:
array.chunkIndex( chunkSize = 2, index = n )
0 => 0
1 => 0
2 => 1
3 => 1
4 => 2
array.chunkIndex( chunkSize = 3, index = n )
0 => 0
1 => 0
2 => 0
3 => 1
4 => 1
因此 运行 chunkSize = 1 索引的算法将始终生成原始索引。
我该怎么做?明确地说,我不想对数组进行分块,只要确定它将在哪个组中,如果可能的话,没有循环也没有内置函数。
floor(index / chunkSize)
应该可以!
也在伪代码中:
chunkIndex = index / chunkSize
这是简单的整数除法,这意味着您必须注意的唯一情况是 return 会 float/decimal/real 的语言。对于这些情况,您将需要一个 floor
函数来仅查找结果的整数部分。您可能还希望处理负值。