从数组中随机取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 相关文章推荐
js cookies 常见网页木马挂马代码 24小时只加载一次
Apr 13 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
Nov 07 Javascript
jQuery简单实现验证邮箱格式
Jul 15 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
Aug 21 Javascript
jquery+php实现滚动的数字特效
Nov 29 Javascript
深入浅析JavaScript中数据共享和数据传递
Apr 25 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
JavaScript仿聊天室聊天记录
Dec 27 Javascript
理解 javascript 中的函数表达式与函数声明
Jul 07 Javascript
vue实现简易音乐播放器
Aug 14 Vue.js
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
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
php 设计模式之 单例模式
2008/12/19 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
用python读写excel的方法
2014/11/18 Python
python使用tkinter实现简单计算器
2018/01/30 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
下载官网python并安装的步骤详解
2019/10/12 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
python unichr函数知识点总结
2020/12/16 Python
中学教师请假制度
2014/02/03 职场文书
超市促销活动方案
2014/03/05 职场文书
党支部综合考察材料
2014/05/19 职场文书
新闻编辑求职信
2014/07/13 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
社团招新宣传语
2015/07/13 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
导游词之天津古文化街
2019/11/09 职场文书