有没有办法像我们在python中那样访问减索引数组元素?

时间:2019-03-07 06:59:15

标签: javascript string

var str = ['a','c','d','o','p'];

如何使用减号(如str [-2])访问上述字符串中的'o';在javascript中;

在python中,我很容易做到这一点,但是我被卡在这里,请帮忙。

我正在为此任务工作。 ROT13密码是现代常见的用法,其中字母的值偏移了13个位。因此,“ A”↔“ N”,“ B”↔“ O”等。

所以我想到了以负索引访问。例如,如果给定字母为z,索引为25,那么我访问str [-str.length + 13];

3 个答案:

答案 0 :(得分:4)

没有办法做到这一点,但是您可以在javascript中为数组创建一个函数,然后可以如下所示:

str=["a", "c", "d", "o", "p"];

Array.prototype.accessViaIndex=function(index){
if(index<0){
   return this[(this.length+index)]
}
return this[index];
}

console.log(str.accessViaIndex(-1));

答案 1 :(得分:0)

  

我想访问的字符串长度是从索引0开始的字符串长度

JS数组不是循环链接列表结构,如果超出范围,则从第一个值开始。

它们就像普通的对象,您无需指定键并具有广泛的循环机制。

因此,您必须使用 modulus operator (%) 。想法是在范围内回溯索引。

var str=['a','c','d','o','p'];
var index = 11;

console.log( str[ index % str.length] );

答案 2 :(得分:0)

您可以使用.splice()来使用负值:

const arr = ['a','c','d','o','p'];
const getElem = (arr, i) => [...arr].splice(i,1)[0];

console.log(getElem(arr, 0)); // a
console.log(arr); // array is still the same
console.log(getElem(arr, -1)); // p
console.log(getElem(arr, -2)); // o