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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
jQuery validate 验证radio实例
Mar 01 Javascript
Angularjs 事件指令详细整理
Jul 27 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
vue router下的html5 history在iis服务器上的设置方法
Oct 18 Javascript
vue axios请求成功却进入catch的原因分析
Sep 08 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
JavaScript async/await原理及实例解析
Dec 02 Javascript
如何用JS实现简单的数据监听
May 06 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
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
跟我学Laravel之配置Laravel
2014/10/15 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
跟老齐学Python之Python文档
2014/10/10 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Python包和模块的分发详细介绍
2020/06/19 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
信息部岗位职责
2013/11/12 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
机电一体化求职信
2014/03/10 职场文书
土地转让协议书范本
2014/04/15 职场文书
企业活动策划方案
2014/06/02 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
信访工作汇报材料
2014/10/27 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
趣味运动会标语口号
2015/12/26 职场文书
车位出租协议书范本
2016/03/19 职场文书