我有一个有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”。我该怎么做呢?
答案 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)