注释很详细,直接上代码
涉及知识点:
- set
- 合法性判断
- 扩展运算符
- 随机函数封装
题干:
我的答案
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<script>
/**
* 永远不要相信调用你写的函数的人,尤其的这种作为循环条件的,没判断好就有可能进入死循环
* 所以开局先排除不合理的情况,
* 已知set自带去重属性,所以我们不需要考虑去重判断,
* 随机数生成函数比较常见,咱封装一下调用
* 最后注意需要返回的是数组而不是set,这里使用扩展运算符展开set作为数组再返回
*/
const getNumberForRange=((start,end)=>{
//左闭右开
return Math.floor(Math.random()*(end-start)+start);
})
const _getUniqueNums = (start, end, n) => {
// 补全代码
if(n<0||end-start+1<n){
console.log('无效情况');
return;
}
let nums=new Set();
while(nums.size<n){
nums.add(getNumberForRange(start,end+1));
}
// 这里用数组的扩展运算符将set转为数组
return [...nums];
};
console.log(_getUniqueNums(1, 4, 5));//无效情况
console.log(_getUniqueNums(1, 10, -5));//无效情况
console.log(_getUniqueNums(1, 10, 10));//正常返回
</script>
</body>
</html>
博客更新不是很及时,需要看后面内容的可以看看我的
gitee仓库