zoukankan      html  css  js  c++  java
  • 从数组中随机取n条不重复的数据

    工作中经常遇到有关数组的一些操作 

    1. 从数据中随机取n条不重复的数据 (PS:下面的S.each是KISSY.each方法,大家可以改为for循环)

    /*
     1 从数组arr中随机取n条不重复的数据
     */
     function myRand(arr,num){
        var newArr = [];
        rand(num);    //随机 n 条
    
        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.从对象中随机取n条不重复的数据

    /*
    随机从对象obj中取n条
     */
    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));
    }
  • 相关阅读:
    Hadoop学习资料收集
    sed使用详解
    shell编程001
    电影《无法触碰》
    正则表达式
    I/O重定向与管道
    bash基础知识
    用户权限模型
    Linux文件管理常用命令
    根文件系统详解
  • 原文地址:https://www.cnblogs.com/summer_shao/p/uniqArr.html
Copyright © 2011-2022 走看看