从数组中随机取x条不重复数据的JS代码


Posted in Javascript onDecember 24, 2013

工作中经常遇到有关数组的一些操作

1. 从数据中随机取x条不重复的数据 (PS:下面的S.each是KISSY.each方法,大家可以改为for循环)

/*
从数组arr中随机取x条不重复的数据
 */
 function myRand(arr,num){
    var newArr = [];
    rand(num);    //随机 x 个
    function rand(k){
        if(k==0){
            return;
        }
        var index = Math.floor(Math.random() * arr.length);
        var flag = true;
        S.each(newArr,function(v){
            if(v == arr[index]){
                flag = false;
            }
        });
        if(flag){
            newArr.push(arr[index]);
            k--;
        }
        rand(k);
    }
    return newArr;
 }

2.从对象中随机取x条不重复的数据

/*
随机从对象obj中取x条
 */
function myRand(){
    var S = KISSY;
    var obj={
        '01':{name:'a'},
        '02':{name:'b'},
        '03':{name:'c'},
        '04':{name:'d'},
        '05':{name:'e'},
        '06':{name:'f'},
        '07':{name:'g'},
        '08':{name:'h'},
        '09':{name:'i'},
        '10':{name:'g'}
    };
    var arr = [];
    S.each(obj,function(v,k){
        arr.push(k);
    });
    //随机取3个
    var newArr = myRand(arr,3);
    S.each(newArr,function(b){
        console.log(obj[b]);
    })
};

3. 去除数组的重复项

/*
去除数组的重复项
 */
function uniqArr(arr){
    function toObject(a) {
        var o = {};
        for (var i=0, j=a.length; i<j; i=i+1) {
            o[a[i]] = true;
        }
        return o;
    };
    function keys(o) {
        var a=[], i;
        for (i in o) {
            if (o.hasOwnProperty(i)) { // 这里, YUI源码中是lang.hasOwnProperty(o, i)
                a.push(i);
            }
        }
        return a;
    };
    return keys(toObject(arr));
}
Javascript 相关文章推荐
基于jquery.Jcrop的头像编辑器
Mar 01 Javascript
JavaScript中获取未知对象属性的代码
Apr 27 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
Apr 01 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
Jul 04 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 Javascript
JS前端基于canvas给图片添加水印
Nov 11 Javascript
JS过滤url参数特殊字符的实现方法
Dec 24 #Javascript
JS控制图片等比例缩放的示例代码
Dec 24 #Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 #Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 #Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
Dec 24 #Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 #Javascript
JS刷新当前页面的几种方法总结
Dec 24 #Javascript
You might like
php指定函数参数默认值示例代码
2013/12/04 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
koa源码中promise的解读
2018/11/13 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
Python中http请求方法库汇总
2016/01/06 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
python实现扫描日志关键字的示例
2018/04/28 Python
wxPython实现画图板
2020/08/27 Python
Python创建临时文件和文件夹
2020/08/05 Python
如何用python写个模板引擎
2021/01/14 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
机械专业个人求职自荐信格式
2013/09/21 职场文书
什么是岗位职责
2013/11/12 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
论文指导教师评语
2014/04/28 职场文书
电气工程师岗位职责
2015/02/12 职场文书
社会实践单位意见
2015/06/05 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis