写一个方法从数组中随机抽取N个不重复的元素
在前端开发中,你可以使用JavaScript的Array
原型方法来实现从数组中随机抽取N个不重复的元素。以下是一个示例方法,它使用了Array.prototype.slice
来复制原数组,Math.random
来生成随机数,以及Array.prototype.splice
来从数组中移除已选中的元素:
function getRandomElements(arr, n) {
if (n > arr.length) {
throw new Error('Cannot select more elements than the array contains');
}
// 复制原数组,避免修改原数组
let clonedArr = arr.slice();
let result = [];
for (let i = 0; i < n; i++) {
// 生成随机索引
let randomIndex = Math.floor(Math.random() * clonedArr.length);
// 从clonedArr中取出随机元素,并将其添加到结果数组中
result.push(clonedArr[randomIndex]);
// 从clonedArr中移除已被选中的元素,以确保不会重复选择
clonedArr.splice(randomIndex, 1);
}
return result;
}
使用示例:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let n = 3;
let randomElements = getRandomElements(arr, n);
console.log(randomElements); // 输出可能是 [3, 7, 1],具体结果每次运行都可能不同
这个方法首先检查请求的元素数量n
是否超过了原数组的长度。如果是,则抛出一个错误。然后,它复制原数组以避免修改原数组。接下来,它使用一个循环来从复制的数组中随机选择元素,直到达到所需的数量。在每次迭代中,它都会生成一个随机索引,使用该索引从复制的数组中选择一个元素,并将其添加到结果数组中。然后,它从复制的数组中移除已选中的元素,以确保不会重复选择。最后,它返回包含所选元素的结果数组。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了