从数组中随机取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 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
关于jquery append() html时的小问题的解决方法
Dec 16 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
May 13 Javascript
javascript实现节点(div)名称编辑
Dec 17 Javascript
jQuery 选择器详解
Jan 19 Javascript
JavaScript实现表格快速变色效果代码
Aug 19 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
React Native使用百度Echarts显示图表的示例代码
Nov 07 Javascript
Vue header组件开发详解
Jan 26 Javascript
vue实现移动端悬浮窗效果
Dec 01 Javascript
仿照Element-ui实现一个简易的$message方法
Sep 14 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文件上传的例子及参数详解
2013/12/12 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
php生成无限栏目树
2017/03/16 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
ie 调试javascript的工具
2009/04/29 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Form表单及django的form表单的补充
2019/07/25 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
Python 实现数组相减示例
2019/12/27 Python
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
教师师德表现自我评价
2015/03/05 职场文书
学雷锋活动简报
2015/07/20 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
MySQL深分页问题解决思路
2022/12/24 MySQL