假设我有两个相同的数组:
var array1=[1,2,3,4,5], array2=[1,2,3,4,5]
如何对第二个数组进行洗牌,使得没有元素与第一个数组中的元素位置相同:
array2=[3,1,4,5,2] // OK
array2=[1,4,2,3,5] // Not OK
通过使用while循环和自定义“shuffle”和“same_position”函数,我能够实现所需的结果:
shuffle(array2)
while(same_position(array1,array2)){
shuffle(array2);
}
function same_position(array1,array2){
// checks with a loop whether any elements are in the same position in array 1 and array 2, returns true if so
}
function shuffle(array){
// randomly shuffles array in place
}
但是,我想知道是否有一种更有效的方法可以在不使用嵌套循环的情况下执行此操作 - 是否可以在单次传递中实现相同的结果?