即使索引超出范围,如何从数组中获取项目

时间:2017-01-17 22:11:37

标签: javascript jquery arrays

我有一个有8个职位的数组:

var myArray = [];
myArray[0] = "text1";
myArray[1] = "text2";
myArray[2] = "text3";
myArray[3] = "text4";
myArray[4] = "text5";
myArray[5] = "text6";
myArray[6] = "text7";
myArray[7] = "text8";

我想要发生的是,如果用户输入大于8的数字以从阵列中获取其中一个文本,则在[7]之后再次从阵列的开头开始。因此,如果用户输入10,则用户将获得位置[1]的值“text2”。我该怎么做呢?

4 个答案:

答案 0 :(得分:4)

你可以通过使用处理这些"包装"的"remainder" modulo operator来实现这一目标。场景:

function getArrayValueWithWrapping(array, index){
     return array[index % array.length];
}

答案 1 :(得分:1)

使用calculate运算符,您必须division % (modulos)的剩余部分。

var myArray = [];
myArray[0] = "text1";
myArray[1] = "text2";
myArray[2] = "text3";
myArray[3] = "text4";
myArray[4] = "text5";
myArray[5] = "text6";
myArray[6] = "text7";
myArray[7] = "text8";
$('button').click(function(){
  alert(myArray[$('input').val()%8]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number"/>
<button>Get Text</button>

答案 2 :(得分:1)

我认为它适用于myArray [index%8]。如果你然后尝试调用索引nr。 8模数返回0.如果你打电话给nr。 9,它会让你索引数组1。

希望它有所帮助。

答案 3 :(得分:0)

您可以使用%(模数)运算符。这将取一个数字并将其除以另一个并返回余数。例如:

x = 9 % 8;
// x == 1

因为8/9 = 8且余数为1,所以这将永远不会返回大于8的数字,但会循环通过余数(8%10 == 2,8%16 == 0)