从数组中随机取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 相关文章推荐
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
js实现图片轮换效果代码
Apr 16 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
Validform+layer实现漂亮的表单验证特效
Jan 17 Javascript
js按条件生成随机json:randomjson实现方法
Apr 07 Javascript
Vue项目webpack打包部署到服务器的实例详解
Jul 17 Javascript
Angular4学习笔记之实现绑定和分包
Aug 01 Javascript
Angularjs添加排序查询功能的实例代码
Oct 24 Javascript
React-native桥接Android原生开发详解
Jan 17 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
Mar 04 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读取msn上的用户信息类
2008/12/05 PHP
PHP 错误处理机制
2015/07/06 PHP
js切换div css注意的细节
2012/12/10 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
详解vue axios中文文档
2017/09/12 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Django 内置权限扩展案例详解
2019/03/04 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
党员批评与自我批评
2014/02/12 职场文书
表决心的诗句大全
2014/03/11 职场文书
计算机专业自荐信
2014/05/24 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
政风行风整改报告
2014/11/06 职场文书
2014年科室工作总结
2014/11/20 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2015公司年度工作总结
2015/05/14 职场文书
单身证明范本
2015/06/15 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB