如果我有一个任意长度的数组。如果知道每个切片的元素数量,我怎样才能找到该数组的给定元素的偏移量?我的意思是没有实际切片。
示例:
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
答案 0 :(得分:3)
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..n]
var perSlice = 4;
arr.indexOf(5) % perSlice
如果你想知道元素最终的WHICH切片,则除以%。
Math.floor(arr.indexOf(5) / perSlice) // 1
答案 1 :(得分:1)
通过执行以下操作在索引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处的值,而不是索引本身。代码很容易修改为使用索引而不是值。
答案 2 :(得分:0)
使用模数运算符
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..n]
arr[(((index + step) % arr.length) + arr.length) % arr.length];