从数组中随机取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 next nextAll nextUntil siblings的区别介绍
Oct 05 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
js用Date对象的setDate()函数对日期进行加减操作
Sep 18 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
分享jQuery封装好的一些常用操作
Jul 28 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
jQuery select自动选中功能实现方法分析
Nov 28 Javascript
Ajax 加载数据 练习代码
Jan 05 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 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和XSS跨站攻击的防范
2007/04/17 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
python numpy 反转 reverse示例
2019/12/04 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python collections模块的使用方法
2020/10/09 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
师范学院毕业生求职信范文
2013/12/26 职场文书
校三好学生主要事迹
2014/01/11 职场文书
活动总结怎么写啊
2014/05/07 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
黄山导游词
2015/01/31 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
同事去世追悼词
2015/06/23 职场文书
亲戚关系证明
2015/06/24 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL