Javascript 在具有随机起始索引的数组中选择4个值
我的数组看起来像:Javascript 在具有随机起始索引的数组中选择4个值,javascript,arrays,sorting,random,Javascript,Arrays,Sorting,Random,我的数组看起来像: var arr = [0,1,2,3,4,5]; var start = getRandomInt(0,5); function getRandomInt (min,max) { return Math.floor(Math.random() * (max - min + 1)) + min; } 所以我随机开始点(索引)如下: var arr = [0,1,2,3,4,5]; var start = getRandomInt(0,5); function ge
var arr = [0,1,2,3,4,5];
var start = getRandomInt(0,5);
function getRandomInt (min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
所以我随机开始点(索引)如下:
var arr = [0,1,2,3,4,5];
var start = getRandomInt(0,5);
function getRandomInt (min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
例如:
var arr = [0,1,2,3,4,5];
var start = getRandomInt(0,5);
function getRandomInt (min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
如果start
为0
,则返回0,1,2,3
如果start
为1
,则返回1,2,3,4
如果start
是2
,则返回2,3,4,5
如果start
是3
,则返回3,4,5,0
如果start
是4
,则返回4,5,0,1
如果start
是5
,则返回5,0,1,2
只要随机设置一个开始索引,就可以循环该数组
我想知道有什么简单的方法可以做到这一点
操场:这里的主要问题是从上一个索引移回0,这可以通过模运算来实现。您应该执行以下类似操作:
var data = [0,1,2,3,4,5];
var NUM_VALUES = 4; // Amount of values to take
var start = 3; // Replace with getRandomInt function
var values = [];
for(var i = start, j = 0; j < NUM_VALUES; j++, i = (i+1) % data.length) {
values.push(data[i]);
}
console.log(values); // [ 3, 4, 5, 0 ]
var数据=[0,1,2,3,4,5];
var NUM_值=4;//要获取的值的数量
var start=3;//替换为getRandomInt函数
var值=[];
对于(var i=start,j=0;j
变量i
包含我们要访问的数组的当前索引。它被初始化为start
,如您所需。变量j
仅用于确保获取所需值的数量,在本例中为4
。正如您所看到的,j
在每个循环后递增1,我们继续运行,直到它等于NUM\u值。没什么特别的
变量i
也会增加1(i=i+1
),但我们会在之后应用模运算,以便将结果数保持在0
和数据之间。length-1
。模只会导致整数除法后的余数,因此6%4
将是2
,6%6
将是0
,等等。这样做是为了使索引永远不会高于上一个索引。当i
点击这里的6
时,模会按我们的要求将其推回0
。非常感谢,但是--->,为什么有时未定义的?@l2aelba是您的随机数高于上一个索引?你也可以在start
中添加一个模,但也许你应该修复你的随机函数:)是的,我看到了,你用0,len
调用了你的随机函数,但那应该是0,len-1
:)。如果你能表达(var I=start,j=0;j
这对我和其他人都有很大帮助:D@l2aelba我在上面的回答中添加了一些解释。