gpt4 book ai didi

javascript - 随机排列数组,除了偶数索引的 javascript

转载 作者:行者123 更新时间:2023-11-29 21:44:17 25 4
gpt4 key购买 nike

我可以用这个函数打乱数组

function getBadlyShuffledList(list) {
var length = list.length;
var i;
var j;

while (length) {
i = Math.floor(Math.random() * length--);


j = list[length];
list[length] = list[i];
list[i] = j;

}
return list;
}

console.log(getBadlyShuffledList([1,2,3,4,5,6]));

问题是我需要将可被二整除的索引留在它们的位置。我尝试使用 if 语句,如果它是 2 或 4,它会得到索引,但我不知道该怎么做才能让它保持不变。

例如,如果我有一个数组 [1, 2, 3, 4, 5, 6]洗牌时,3 和 5 应保持不变。前任; [2, 4, 3, 1, 5, 6]我该怎么做?

最佳答案

我从以下链接借用了一个随机播放功能... How to randomize (shuffle) a JavaScript array?

构建一个数组,其中包含您要打乱顺序的元素。洗牌。最后将每个元素一个一个地添加回原始数组,跳过所有其他元素。它可以工作,但还有优化空间。

/**
* Randomize array element order in-place.
* Using Fisher-Yates shuffle algorithm.
*/
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}


function getBadlyShuffledList(list) {

listToShuffle = []

for(var i=0; i < list.length; i++){
if (i%2!==0){
listToShuffle.push(list[i]);
}
}

shuffleArray(listToShuffle);

for(var i=0; i < list.length; i++){
if (i%2!==0){
list[i] = listToShuffle[0];
listToShuffle.shift();
}
}

return list;
}

console.log(getBadlyShuffledList([3, 1, 2, 3, 4, 5, 6, 6, 6, 9, 2]));

关于javascript - 随机排列数组,除了偶数索引的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com