js实现从数组里随机获取元素


Posted in Javascript onJanuary 12, 2015

基础知识:

复制数组:

(1)循环遍历复制(不推荐)

var arry = [1,5,9,7],

    new_arry = [],

    n = 0,

    len = arry.length;

for(;n<len;n++){

    new_arry.push(arry[n]);

}

(2)concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本

var arry = [1,5,9,7],

    new_arry = arry.concat();

console.log(new_arry);

(3)slice() 方法可从已有的数组中返回选定的元素

var arry = [1,5,9,7],

    new_arry = arry.slice(0);

console.log(new_arry);

随机数:

Math.random()
Math.random(),返回0到1的随机数,如:0.4261967441998422

个人封装函数:

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;

}

var new_val = getRandom({'arry':[1,6,8,0,3],'range':3});

console.log(new_val);

是不是很好用呢,非常实用的代码,这里是从本人项目中分离出来分享给大家,希望对大家有所帮助。

Javascript 相关文章推荐
javascript 函数使用说明
Apr 07 Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
页面内容排序插件jSort使用方法
Oct 10 Javascript
Bootstrap简单表单显示学习笔记
Nov 15 Javascript
浅谈JavaScript的自动垃圾收集机制
Dec 15 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
小程序实现多选框功能
Oct 30 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
node.js express框架实现文件上传与下载功能实例详解
Oct 15 Javascript
js实现中文实时时钟
Jan 15 Javascript
javascript的tab切换原理与效果实现方法
Jan 10 #Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 #Javascript
js中键盘事件实例简析
Jan 10 #Javascript
js中this的用法实例分析
Jan 10 #Javascript
js创建对象的方式总结
Jan 10 #Javascript
js对象继承之原型链继承实例
Jan 10 #Javascript
js对象的复制继承实例
Jan 10 #Javascript
You might like
星际争霸任务指南——神族
2020/03/04 星际争霸
php中文字符截取防乱码
2008/03/28 PHP
Snoopy类使用小例子
2008/04/15 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
经典促销广告词大全
2014/03/19 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
承兑汇票延期证明
2015/06/23 职场文书
教师节简报
2015/07/20 职场文书