从数组中随机取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 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
JS文字球状放大效果代码分享
Aug 19 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
Apr 14 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 Javascript
微信小程序实现日历效果
Dec 28 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 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
Session的工作方式
2006/10/09 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python魔术方法详解
2015/02/14 Python
Python 实现链表实例代码
2017/04/07 Python
Python模块搜索路径代码详解
2018/01/29 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
通信工程毕业生求职信
2013/11/16 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
考试作弊检讨
2015/01/27 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL