从数组中随机取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实现页面加载时弹出对话框代码
Apr 19 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
js全选按钮的实现方法
Nov 17 Javascript
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 Javascript
JS实现头条新闻的经典轮播图效果示例
Jan 30 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 Javascript
webpack proxy 使用(代理的使用)
Jan 10 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Django保护敏感信息的方法示例
2019/05/09 Python
python线程中的同步问题及解决方法
2019/08/29 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
python入门教程之基本算术运算符
2020/11/13 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
信息工作经验交流材料
2014/05/28 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
婚庆主持词大全
2015/06/30 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
Python实现简单得递归下降Parser
2022/05/02 Python