网络编程 
首页 > 网络编程 > 浏览文章

从数组中随机取x条不重复数据的JS代码

(编辑:jimmy 日期: 2025/5/13 浏览:3 次 )

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

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));
}

上一篇:jquery自动切换tabs选项卡的具体实现
下一篇:JS过滤url参数特殊字符的实现方法
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap