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 相关文章推荐
jQuery Div中加载其他页面的实现代码
Feb 27 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
Jun 27 Javascript
利用javascript判断文件是否存在
Dec 31 Javascript
JavaScript淡入淡出渐变简单实例
Aug 06 Javascript
使用Object.defineProperty实现简单的js双向绑定
Apr 15 Javascript
JS前端笔试题分析
Dec 19 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
使用vuex缓存数据并优化自己的vuex-cache
May 30 Javascript
ajaxfileupload.js实现上传文件功能
Apr 19 Javascript
开源一个微信小程序仪表盘组件过程解析
Jul 30 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 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
javascript获取选中的文本的方法代码
2013/10/30 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python pdb调试方法分享
2014/01/21 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
详解python里的命名规范
2018/07/16 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
python实现扫描ip地址的小程序
2019/04/16 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
存储过程和函数的区别
2013/05/28 面试题
医院竞聘演讲稿
2014/05/16 职场文书
会计稽核岗位职责
2015/04/13 职场文书
新员工入职感想
2015/08/07 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
python_tkinter事件类型详情
2022/03/20 Python
JavaScript设计模式之原型模式详情
2022/06/21 Javascript
git stash(储藏)的用法总结
2022/06/25 Servers