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));
    }
  • 相关阅读:
    同余方程
    倒酒
    机器翻译
    vue 锚点定位
    解决vuex刷新页面数据丢失
    h5 input失去焦点软键盘把页面顶起
    js 监听ios手机键盘弹起和收起的事件
    js 将数组中的每一项安装奇偶重新组合成一个数组对象
    moment.js获取本周本月本年的开始日期和结束日期
    vue 所有的路由跳转加一个统一参数
  • 原文地址:https://www.cnblogs.com/summer_shao/p/uniqArr.html
Copyright © 2011-2022 走看看