从数组中随机取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 获得绝对,相对位置的坐标方法
Feb 09 Javascript
JavaScript 设计模式之组合模式解析
Apr 09 Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
Oct 20 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
canvas时钟效果
Feb 16 Javascript
jQuery修改DOM结构_动力节点Java学院整理
Jul 05 jQuery
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
Vue组件生命周期运行原理解析
Nov 25 Vue.js
vue使用echarts画组织结构图
Feb 06 Vue.js
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中的一个中文字符串截取函数
2007/02/14 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
求得div 下 img的src地址的js代码
2007/02/28 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
node中实现删除目录的几种方法
2019/06/24 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
详解React 条件渲染
2020/07/08 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python异步任务队列示例
2014/04/01 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
python安装twisted的问题解析
2018/08/21 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
2014年个人总结范文
2015/03/09 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
敬老院活动感想
2015/08/07 职场文书
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫