如何将任何整数映射到javascript数组中的索引
。。。等等。这个问题不需要数组因子。它是关于将任何整数映射到一个有限的范围 这可以通过以下转换实现:如何将任何整数映射到javascript数组中的索引,javascript,arrays,Javascript,Arrays,。。。等等。这个问题不需要数组因子。它是关于将任何整数映射到一个有限的范围 这可以通过以下转换实现: i=-3 => 0 i=-2 => 1 i=-1 => 2 i=0 => 0 i=1 => 1 i=2 => 2 i=3 => 0 i=4 => 1 i=5 => 2 注意:对于正数,您可以只使用i%3,但它不能提供负数所需的结果 我可能建议创建一个索引函数,该函数接受一个数组xs,以及一个索引I。从概念上讲,我们要做的是在i在任何方向超出
i=-3 => 0
i=-2 => 1
i=-1 => 2
i=0 => 0
i=1 => 1
i=2 => 2
i=3 => 0
i=4 => 1
i=5 => 2
注意:对于正数,您可以只使用
i%3
,但它不能提供负数所需的结果 我可能建议创建一个索引
函数,该函数接受一个数组xs
,以及一个索引I
。从概念上讲,我们要做的是在i
在任何方向超出xs
的范围时将其环绕。这正是我们做这项工作所需要的
const index=(xs,i)=>
i<0
? xs[0-(i%xs.length)]
:xs[i%xs.长度]
常量数据=
[‘a’、‘b’、‘c’]
for(设i=-5;i<6;i++)
console.log(i,索引(数据,i))
//-5‘c’
//-4‘b’
//-3'a'
//-2‘c’
//-1‘b’
//0'a'
//1‘b’
//2'c'
//3'a'
//4‘b’
//5'c'
我找到了一个很好的解决方案:
j = i - Math.floor(i/3)*3
功能模块(n,m){
常数q=n%m;
返回q<0?q+m:q;
}
在这里可以找到:更适合使用具有两个属性的对象:键和值。是否有任何答案适合您的需要?你能留下评论吗?
j = i - Math.floor(i/3)*3
function mod(n, m) {
const q = n % m;
return q < 0 ? q + m : q;
}