📅  最后修改于: 2023-12-03 14:54:41.433000             🧑  作者: Mango
在开发中,我们有时需要将数组按照指定长度切割成多个小数组。而在某些情况下,我们需要将数组随机切割成多个小数组,这时候可以使用本文介绍的方法。
我们可以先将数组打乱顺序,然后按照指定长度进行切割。这样可以保证最终生成的小数组是随机的。
下面是具体的实现方式:
function randomSlice(arr, size) {
arr = arr.slice();
arr.sort(() => Math.random() - 0.5);
const result = [];
while (arr.length) {
result.push(arr.splice(0, size));
}
return result;
}
我们复制了一份原数组,然后利用 sort
方法打乱数组顺序(具体实现可以查看 Fisher-Yates shuffle)。然后利用 splice
方法将数组按照指定长度切割成多个小数组,一直循环切割直到原数组为空。
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = randomSlice(arr, 3);
console.log(result);
// => [[8, 7, 6], [1, 9, 2], [10, 3, 5], [4]]
本文介绍了一种按长度随机切割数组的方法,广泛应用于各种场景中。我们通过将数组打乱顺序实现了随机切割的目的,同时将代码说明写清楚,方便使用者了解。