gpt4 book ai didi

javascript - 在 Javascript 中随机播放嵌套数组

转载 作者:行者123 更新时间:2023-12-05 00:36:56 24 4
gpt4 key购买 nike

我正在尝试对一个数组中的多个数组进行排序(也必须对其进行洗牌)。一个简化的例子是:

let toShuffle = [
[1, 2, 3, 4, 5],
[9, 8, 7, 6, 5],
[10, 67, 19 ,27]
...
];

const shuffled = shuffle(toShuffle);

// outout would look something like:
// [
// [8, 6, 5, 7, 9],
// [4, 3, 1, 5, 2],
// [19, 26, 10, 67],
// ...
// ]
这需要灵活,因此具有任意数量值的任意数量的数组都应该是有效的。
这是我尝试过的:

function shuffle(a) {
for (let e in a) {
if (Array.isArray(a[e])) {
a[e] = shuffle(a[e]);
} else {
a.splice(e, 1);
a.splice(Math.floor(Math.random() * a.length), 0, a[e]);
}
}

return a;
}

console.log("Shuffled: " + shuffle([
[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]
]))

但它没有按预期工作。他们是更简单的方法吗?或者我的代码是正确的,只是有问题。

最佳答案

您可以使用Array.from()创建一个新的浅拷贝array然后洗牌Array.prototype.sort()结合 Math.random()
代码:

const toShuffle = [
[1, 2, 3, 4, 5],
[9, 8, 7, 6, 5],
[10, 67, 19 ,27]
]

const shuffle = a => Array.from(a).sort(() => .5 - Math.random())
const result = toShuffle.map(shuffle)

console.log('Shuffled:', JSON.stringify(result))
console.log('To shuffle:', JSON.stringify(toShuffle))

关于javascript - 在 Javascript 中随机播放嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72223247/

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