gpt4 book ai didi

javascript - 异常(exception)情况是固定位置的随机排列数组

转载 作者:行者123 更新时间:2023-12-03 05:46:25 24 4
gpt4 key购买 nike

我有一个输出多个 ID 的数组。顺序应该打乱,但第一个ID应该保留在这个位置。我看过 Fisher-Yates(又名 Knuth)洗牌,但我不知道如何针对我的情况编辑它。

一种方法是将其分成两个数组。与单一物体合一。然后将数组与另一个帖子一起洗牌。洗牌后,我将两个数组组合起来,就像我在这个 fiddle 中所做的那样: https://jsfiddle.net/464fmfty/2/

// array listing post ids
var arr = [2, 11, 37, 42, 88, 234, 23, 71, 172, 82];
var arrNew = [];

arrNew.push(arr.shift());
arr = shuffle(arr);
arrNew.push(arr);

document.body.innerHTML= arrNew;

但我想知道是否有更好/更漂亮的方法来做到这一点?

最佳答案

shuffle函数应该像shuffle(arr, start, length)那样调用,这样代码就变得简单了。

function shuffle(array, start, length) {  var currentIndex, i, tmp, randomIndex;   for (i = length; i > 1; i--) {    // Pick a remaining element...    randomIndex = start + Math.floor(Math.random() * i);    currentIndex = start + i - 1;    // And swap it with the current element.    tmp = array[currentIndex];    array[currentIndex] = array[randomIndex];    array[randomIndex] = tmp;  }}// array listing post idsvar arr = [2, 11, 37, 42, 88, 234, 23, 71, 172, 82];shuffle(arr, 1, arr.length - 1);document.body.innerHTML= arr;

请注意,我删除了return arr,因为当函数就地修改数组并返回它时,会造成困惑。

关于javascript - 异常(exception)情况是固定位置的随机排列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318365/

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