Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过负索引访问数组元素_Javascript_Arrays_Modulo_Negative Number - Fatal编程技术网

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

Javascript 通过负索引访问数组元素,javascript,arrays,modulo,negative-number,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' 现在我想对负整数得到同样的结果,但我不知道怎么做=( 我真的希望我的问题足够清楚(你可以用 n

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

var arr = array['foo', 'bar', 'foobar'];
var someInteger = 3;
var element = array[ someInteger%arr.length ]; // returns the first element 'foo'
现在我想对负整数得到同样的结果,但我不知道怎么做=(

我真的希望我的问题足够清楚(你可以用

  • n
    integer
  • n%l
    整数在
    (-l,l)
  • n%l+l
    整数在
    (0,2*l)
  • (n%l+l)%l
    中的整数
    [0,l)
  • 在JavaScript中

    arr[(某个整数%arr.length+arr.length)%arr.length]
    
    或者,您可以使用地板、天花板和截断:

    n-Math.floor(n/l)*l;//在[0,l]中
    n-Math.ceil(n/l)*l;//in(-l,0)
    n-Math.trunc(n/l)*l;//in(-l,l)
    
    如果数字为负数:

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

    然后使用<代码>数组[AdOxDigal%Ar.List] 正如你之前所做的。

    这真的非常有用!非常感谢,聪明的男孩!我希望我几小时前问过我的问题……“莉莉根本就不……”如果你有很多索引,考虑在一个函数中实现它,以避免每次重复它。
    while(someInteger < 0)
        someInteger += arr.length;