[英]Fastest way to determine offset in array
如果我有一个任意长度的数组。 如果每个切片的元素数已知,我如何找到该数组给定元素的偏移量? 我的意思是实际上没有切片数组。
例:
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..n]
if perSlice = 4; offset for arr[5] == 1, for arr[8] == 2 etc.
if perSlice = 3; offset for arr[2] = 0, for arr[4] = 1 etc.
i.e.:
perSlice = 4
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..n]
0 0 0 0 1 1 1 1 2 2 2, ..n
通过执行以下操作找到索引i的偏移量: parseInt(i/perSlice)
var arr = [0,1,2,3,4,5,6,7,8,9,10];
function getIndexes(arry, perSlice) {
var ret =[];
for(i in arry){
ret.push(parseInt(i/perSlice));
}
return ret;
}
var indexes = getIndexes(arr, 4);
console.log(indexes);
编辑:请注意,这使用索引i处的值,而不是索引本身。 代码很容易修改为使用索引而不是值。
使用模运算符
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..n]
arr[(((index + step) % arr.length) + arr.length) % arr.length];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.