要求:
- 有范围,闭区间
- 起始值肯定大于1
- 随机数不能重复
知识点:
-
Array.sort(fun):当fun返回的值在排序期间会变化时,排序的结果将是乱序。
-
Array(10):以数字为参数创建数组,将创建一个长度为参数的数组,每一项为undefined。
-
Array.keys():keys方法将数组的索引依次遍历,以数组的方式返回。
-
Array.map():数组的遍历方法。接收两个参数,
第一个为函数(fn)为参数,fn有三个参数,第一个为遍历array的当前项,第二个参数为当前项的索引,第三个为被遍历的数组。
第二个为执行fn时,this指向的对象。 -
尾递归:用递归的规律做判断条件,为true,执行本身函数;为false,返回函数内存下的所需值。
function dualColor(red: number = 6, blue: number = 1) {
const reds: [number, number] = [1, 33]
const blues: [number, number] = [1, 16]
return [randomBall(reds, red), randomBall(blues, blue)]
}
function randomBall(
fromto: number[],
total: number,
temp: number[] = [],
): number[] {
const [head, ...body] = (temp.length
? fromto
: [...Array(fromto[1]).keys()]
.splice(fromto[0] - 1)
.map(item => item + 1)
).sort(() => Math.random() - 0.5);
return !total
? temp
: randomBall(body, total - 1, temp.concat(head))
本文探讨了在特定范围内生成不重复随机数的方法,并深入分析了JavaScript中Array.sort的使用陷阱,以及如何利用Array的各种方法实现高效算法。
1万+

被折叠的 条评论
为什么被折叠?



