📅  最后修改于: 2023-12-03 14:42:41.787000             🧑  作者: Mango
在 JavaScript 中,有时你需要生成随机不同数字的数组。例如,你可能需要为一个游戏生成一组随机的秘密数字,或者需要对一组数据进行随机的排序。在本文中,我们将介绍如何使用 JavaScript 生成随机不同数字的数组。
ES6 中引入了 Set 对象。它是一种无序且唯一的集合数据类型。你可以使用它来生成随机不同数字的数组。下面是一个示例代码:
const generateRandomArray = (min, max, length) => {
const set = new Set();
while (set.size < length) {
set.add(Math.floor(Math.random() * (max - min + 1) + min));
}
return [...set];
}
这个函数接受三个参数。第一个参数是要生成的数字的最小值,第二个参数是最大值,第三个参数是要生成的数字的数量。函数首先创建一个 Set 对象。然后,它使用一个 while 循环来生成随机数字并将它们添加到 Set 对象中。最后,函数将 Set 对象转换为数组并返回。
在 ES6 之前,没有 Set 对象。但是,你可以使用递归函数来生成随机不同数字的数组。下面是一个示例代码:
const generateRandomArray = (min, max, length, arr = []) => {
const num = Math.floor(Math.random() * (max - min + 1) + min);
return arr.length === length ? arr : arr.includes(num) ? generateRandomArray(min, max, length, arr) : generateRandomArray(min, max, length, [...arr, num]);
}
这个函数与上面的函数类似,但它使用递归函数来生成随机数字并将它们添加到一个数组中。这个函数接受四个参数。前三个参数与上面的函数相同。第四个参数是一个数组,用来存储生成的随机数字。函数首先生成一个随机数字。然后,它检查数组中是否包含这个数字。如果包含,它将继续递归调用函数。如果数组不包含这个数字,它将把它添加到数组中并再次递归调用函数。如果数组的长度达到了要求,函数将返回数组。
JavaScript 提供了多种方法来生成随机不同数字的数组。无论你选择的方法是使用 Set 对象还是递归函数,你都可以快速生成一组随机的、不同的数字。