从数组中随机取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 相关文章推荐
JavaScript 应用技巧集合[推荐]
Aug 30 Javascript
Javascript Request获取请求参数如何实现
Nov 28 Javascript
javascript与jquery中跳出循环的区别总结
Nov 04 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
JS实现控制文本框的内容
Jul 10 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
Vue中的vue-resource示例详解
Nov 02 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
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
C#笔试题集合
2013/06/21 面试题
国贸专业个人求职信范文
2014/01/08 职场文书
毕业寄语大全
2014/04/09 职场文书
医疗纠纷协议书
2014/04/16 职场文书
任命书怎么写
2014/06/04 职场文书
董事长秘书工作职责
2014/06/10 职场文书
青年标兵事迹材料
2014/08/16 职场文书
校长师德表现自我评价
2015/03/05 职场文书
angular异步验证器防抖实例详解
2022/03/31 Javascript
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers