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 typeof 用法
Dec 28 Javascript
jQuery实现公告文字左右滚动的实例代码
Oct 29 Javascript
jquery cookie的用法总结
Nov 18 Javascript
JavaScript数据类型详解
Apr 01 Javascript
vue单个组件实现无限层级多选菜单功能
Apr 10 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
May 02 Javascript
js使用文件流下载csv文件的实现方法
Jul 15 Javascript
解决layui数据表格Date日期格式的回显Object的问题
Sep 19 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 Javascript
Openlayers+EasyUI Tree动态实现图层控制
Sep 28 Javascript
JavaScript中isPrototypeOf函数
Nov 07 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
基于PHP创建Cookie数组的详解
2013/07/03 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
你应该知道的python列表去重方法
2017/01/17 Python
详解Python中的type和object
2018/08/15 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
Python如何测试stdout输出
2020/08/10 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
优秀学生自我鉴定范例
2013/12/18 职场文书
学习党课思想汇报
2013/12/29 职场文书
历史学专业求职信
2014/06/19 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
水电工程师岗位职责
2015/02/13 职场文书
八年级作文之感恩
2019/11/22 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis