如何随机迭代一次数组,然后按顺序重复迭代

时间:2014-07-31 19:50:12

标签: javascript arrays random shuffle

这是我的数组:arr = [0, 1, 2, 3, 4, 5]我想第一次随机迭代它,然后每次以相同(随机)的顺序迭代它。我该怎么办?我能想到的唯一方法就是使用类似this shuffle function之类的内容来重新调整arr,然后按顺序迭代。例如:

newArr = shuffle(arr);
for(j = 0; j <5; j++) {
    for(i = 0; i < newArr.length; i++)
}

我想知道是否有一种更简单的内联方式,以便如果项目被附加到数组中,我不需要重新洗牌(并且每次都要创建一个新的array

2 个答案:

答案 0 :(得分:0)

我很确定没有内置功能。 所以...制作一个与数组大小相同的int列表,并为它们分配0..count-1。然后从0到列表大小(-1)随机选择一个数字,并删除该位置的数字并将其添加到新的(第二个)列表中。重复,直到第一个列表为空。第二个列表将是原始范围内的一组随机偏移量。

答案 1 :(得分:0)

创建第二个数组。接下来,使用随机数填充数组(范围从0到array.length)。现在创建一个迭代遍历辅助数组的for循环。数组中的每个数字对应array中的索引。

结果:您现在可以随机迭代array而不修改array的顺序。

稍后您可以使用splice()函数在随机点添加到第二个数组(并push()添加到主array)。