从数组中随机取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 相关文章推荐
asp 的 分词实现代码
May 24 Javascript
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
jQuery prev ~ siblings选择器使用介绍
Aug 09 Javascript
BootStrap入门教程(三)之响应式原理
Sep 19 Javascript
浅谈javascript中遇到的字符串对象处理
Nov 18 Javascript
浅谈JS封闭函数、闭包、内置对象
Jul 18 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
关于JS模块化的知识点分享
Oct 16 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
微信小程序实现签到弹窗动画
Sep 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
php 执行系统命令的方法
2009/07/07 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python实现的简单猜数字游戏
2015/04/04 Python
Python实现批量下载图片的方法
2015/07/08 Python
详解python中的 is 操作符
2017/12/26 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
大专会计自我鉴定
2014/02/06 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
班组建设经验交流材料
2014/05/12 职场文书
党员检讨书
2014/10/13 职场文书
教师个人成长总结
2015/02/11 职场文书
红色经典电影观后感
2015/06/18 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang