通过负索引访问数组的元素

时间:2015-05-30 17:16:13

标签: javascript arrays modulo negative-number

我想通过任意索引访问数组的内容。假设我们有一个包含三个元素的数组。模数在这里派上用场并完美地解决了任何正整数的问题:

var arr = array['foo', 'bar', 'foobar'];
var someInteger = 3;
var element = array[ someInteger%arr.length ]; // returns the first element 'foo'

现在我想对负整数有相同的结果,但我不知道如何=(

var arr = array['foo', 'bar', 'foobar'];
var someInteger = -1; // I need this negative integer to return the last element which it doesn´t
var someInteger = -2; // I need this negative integer to return 'bar'
var someInteger = -3; // I need this negative integer to return 'foo'
var someInteger = -4; // I need this negative integer to return 'foobar'
var someInteger = -5; // I need this negative integer to return 'bar'

我真的希望我的问题很清楚=)

2 个答案:

答案 0 :(得分:7)

您可以使用

  1. n整数
  2. {li> n % l (-l, l) 中的整数 {li> n % l + l (0, 2*l) 中的整数 {li> (n % l + l) % l [0, l) 中的整数

    在JavaScript中,

    arr[(someInteger % arr.length + arr.length) % arr.length]
    

    或者,你可以玩地板,天花板和截断:

    n - Math.floor(n / l) * l; // in [ 0,l)
    n - Math.ceil (n / l) * l; // in (-l,0]
    n - Math.trunc(n / l) * l; // in (-l,l)
    

答案 1 :(得分:0)

如果数字为负数:

while(someInteger < 0)
    someInteger += arr.length;

然后像之前一样使用array[ someInteger%arr.length ]