从数组中随机取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 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
jQuery Validation实例代码 让验证变得如此容易
Oct 18 Javascript
浅谈javascript对象模型和function对象
Dec 26 Javascript
javascript跨域原因以及解决方案分享
Apr 08 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
Jun 05 Javascript
禁用backspace网页回退功能的实现代码
Nov 15 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
基于JavaScript实现瀑布流效果
Mar 29 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
Dec 20 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
JS array数组检测方式解析
May 19 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 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
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
destoon二次开发入门示例
2014/06/20 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
python在文本开头插入一行的实例
2018/05/02 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
mysql有关权限的表都有哪几个
2015/04/22 面试题
旅游管理毕业生自荐书
2014/02/02 职场文书
设备售后服务承诺书
2014/05/30 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
goland 设置project gopath的操作
2021/05/06 Golang