js实现从数组里随机获取元素
深入JavaScript数组的随机元素提取:方法与封装代码的分享
对于每一个开发者来说,从数组中随机获取元素是一个常见的需求。今天,我将为大家介绍几种实现这一功能的方法,并分享一段我封装的实用代码。
我们先来了解一下关于数组的基础知识。
一、数组的复制方法
虽然数组有其自己的复制方法,但并非所有的方法都会生成新的独立数组。以下是一些常见的数组复制方法:
(1)循环遍历复制(不推荐) 这种方式简单直接,但效率相对较低。
代码示例:
```javascript
var arry = [1,5,9,7];
var new_arry = [];
for(var n = 0; n < arry.length; n++){
new_arry.push(arry[n]);
}
```
(2)concat() 方法 这是一个非常实用的方法,它不会改变原数组,而是返回一个新的数组。
代码示例:
```javascript
var arry = [1,5,9,7];
var new_arry = arry.concat();
console.log(new_arry); // 输出:[1, 5, 9, 7]
```
(3)slice() 方法 这个方法可以从已有的数组中返回选定的元素。当使用slice()方法不传递任何参数时,它会创建一个与原数组相同的新数组。这对于复制数组来说也是一种可行的方法。代码示例: var arry = [1,5,9,7]; var new_arry = arry.slice(0); console.log(new_arry); // 输出:[1, 5, 9, 7] (二)随机数 Math.random()函数可以生成一个介于0(包括)和1(不包括)之间的随机数。利用这个随机数可以实现对数组的随机操作。 个人封装函数 这部分是我项目中分离出来的一个实用函数,它可以实现从数组中随机获取指定数量的元素。代码如下: function getRandom(opt) { var old_arry = opt.arry, range = opt.range; //防止超过数组的长度 range = range > old_arry.length ? old_arry.length : range; var newArray = [].concat(old_arry), //拷贝原数组进行操作就不会破坏原数组 valArray = []; for (var n = 0; n < range; n++) { var r = Math.floor(Math.random() (newArray.length)); valArray.push(newArray[r]); //在原数组删掉已选中的元素,防止重复获取 newArray.splice(r, 1); } return valArray; } 这个函数接收一个包含两个属性的对象作为参数:一个是原数组arry,另一个是期望获取的元素的数量range。函数会返回一个新数组,其中包含从原数组中随机选取的元素。 使用示例: var new_val = getRandom({'arry':[1,6,8,0,3],'range':3}); console.log(new_val); 这个示例将从数组[1,6,8,0,3]中随机获取三个元素并打印出来。这个函数的实现考虑了防止重复获取元素的情况,因此在实际使用中非常实用。 希望这个分享能对大家有所帮助。如果你有任何疑问或建议,请随时与我联系。是不是很好用呢?确实是非常实用的代码!如果你觉得这个分享对你有所帮助,不妨点个赞或者分享给你的朋友们吧!
编程语言
- js实现从数组里随机获取元素
- jQuery获取table表中的td标签(实例讲解)
- JavaScript使用prototype原型实现的封装继承多态示例
- Linux操作系统安装LAMP环境
- 完美兼容ie和firefox的asp.net网站加入收藏和设置主
- IIS7中Ajax.AjaxMethod无效的原因及解决方法
- php调用淘宝开放API实现根据卖家昵称获取卖家店
- Java 项目生成静态页面的代码
- 基于CSS3和jQuery实现跟随鼠标方位的Hover特效
- PHP设计模式之数据访问对象模式(DAO)原理与用
- JavaScript-定时器0~9抽奖系统详解(代码)
- 老生常谈PHP面向对象之标识映射
- Vue-router 中hash模式和history模式的区别
- 全面认识ASP注入技巧
- JavaScript结合PHP实现网页制作中双下拉菜单的动态
- PHP网页游戏学习之Xnova(ogame)源码解读(七)