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 相关文章推荐
Google韩国首页图标动画效果
Aug 26 Javascript
TBCompressor js代码压缩
Jan 05 Javascript
jquery 笔记 事件
Nov 02 Javascript
jQuery的观察者模式详解
Dec 22 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
Mar 24 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
Jun 04 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
Node.js刷新session过期时间的实现方法推荐
May 18 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
Nov 25 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
jQuery事件用法详解
2016/10/06 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python的unittest测试类代码实例
2017/12/07 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python字符串的修改方法实例
2019/12/19 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
渗透攻击的测试步骤
2014/06/07 面试题
十佳大学生村官事迹
2014/01/09 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书