繁体   English   中英

确定数组偏移量的最快方法

[英]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

您可以使用indexOf ,并取 “ perSlice”

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..n]
var perSlice = 4;
arr.indexOf(5) % perSlice

如果您想知道元素的末尾切片,请除以%。

Math.floor(arr.indexOf(5) / perSlice) // 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处的值,而不是索引本身。 代码很容易修改为使用索引而不是值。

使用模运算符

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM