从数组中随机取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中dialog属性小记
Sep 03 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
Dec 12 Javascript
JavaScript中清空数组的三种方法分享
Apr 07 Javascript
javascript之querySelector和querySelectorAll使用说明
Oct 09 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
jQuery实现边框动态效果的实例代码
Sep 23 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
浅析Node.js非对称加密方法
Jan 29 Javascript
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
JS实现滑动拼图验证功能完整示例
Mar 29 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
Phpbean路由转发的php代码
2008/01/10 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
小程序实现选择题选择效果
2018/11/04 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python对文件操作知识汇总
2016/05/15 Python
python中os模块详解
2016/10/14 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python队列的定义与使用方法示例
2017/06/24 Python
django中静态文件配置static的方法
2018/05/20 Python
对python函数签名的方法详解
2019/01/22 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
优秀党员主要事迹
2014/01/19 职场文书
公司薪酬管理制度
2014/01/31 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
如何在Python中妥善使用进度条详解
2022/04/05 Python