从数组中随机取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 CHECKBOX全选,取消全选,反选方法三
Aug 30 Javascript
DOM 基本方法
Jul 18 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
自定义的一个简单时尚js下拉选择框
Nov 20 Javascript
JS创建类和对象的两种不同方式
Aug 08 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
vue实现手机号码抽奖上下滚动动画示例
Oct 18 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
解决iView Table组件宽度只变大不变小的问题
Nov 13 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新手上路(六)
2006/10/09 PHP
一段防盗连的PHP代码
2006/12/06 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
用jscript启动sqlserver
2007/06/21 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
python批量修改图片大小的方法
2018/07/24 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python3.6编写的单元测试示例
2019/08/17 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
Skyscanner波兰:廉价航班
2017/11/07 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
教育技术职业规划范文
2014/03/04 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
给朋友的道歉短信
2015/05/12 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
原生JS实现分页
2022/04/19 Javascript