从数组中随机取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 trim() 功能源代码
Feb 14 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
Mar 05 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 Javascript
javascript模拟命名空间
Apr 17 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
Nov 24 Javascript
js操作数据库实现注册和登陆的简单实例
May 26 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
Thinkjs3新手入门之添加一个新的页面
Dec 06 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 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输出九九乘法表代码实例
2015/03/27 PHP
PHP时间和日期函数详解
2015/05/08 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
php封装一个异常的处理类
2017/06/08 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
javascript引导程序
2008/10/26 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
科学育儿宣传标语
2014/10/08 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书