Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 在具有随机起始索引的数组中选择4个值_Javascript_Arrays_Sorting_Random - Fatal编程技术网

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我在上面的回答中添加了一些解释。