从指定数字集合中随机选数的实现方案及回调函数用法问询
从指定数字中随机选取一个的实现方案
针对你的需求,这里提供几种可作为amazing函数回调的实现方案,都能从传入的数字里随机返回一个:
方案一:兼容旧环境的arguments写法
如果需要适配ES6之前的环境,可以用函数内置的arguments对象获取所有参数:
function randomPick() { // 将arguments转换为数组 const numArray = Array.prototype.slice.call(arguments); // 生成合法的随机索引 const randomIdx = Math.floor(Math.random() * numArray.length); return numArray[randomIdx]; } // 传入回调调用amazing amazing(randomPick);
方案二:ES6剩余参数语法(推荐)
用ES6剩余参数语法能更直观地收集所有传入的数字,代码简洁易读:
function randomPick(...numbers) { const randomIdx = Math.floor(Math.random() * numbers.length); return numbers[randomIdx]; } amazing(randomPick);
方案三:匿名箭头函数(极简写法)
如果不需要复用回调函数,可直接传入匿名箭头函数一步完成:
amazing((...nums) => nums[Math.floor(Math.random() * nums.length)]);
核心逻辑说明
所有方案的底层逻辑一致:
- 将传入的所有数字收集为数组
- 用
Math.random()生成0到1的随机小数,乘以数组长度后取整,得到合法随机索引 - 根据索引从数组中取出对应数字返回
内容的提问来源于stack exchange,提问作者Michael V
相关产品推荐
相关产品推荐

