zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JS数组数据代码 重复 随机
2023-06-13 09:15:14 时间

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

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

复制代码代码如下:


/*
从数组arr中随机取x条不重复的数据
 */
 functionmyRand(arr,num){
   varnewArr=[];
   rand(num);   //随机x个

   functionrand(k){
       if(k==0){
           return;
       }
       varindex=Math.floor(Math.random()*arr.length);
       varflag=true;
       S.each(newArr,function(v){
           if(v==arr[index]){
               flag=false;
           }
       });
       if(flag){
           newArr.push(arr[index]);
           k--;
       }
       rand(k);
   }
   returnnewArr;
 }

2.从对象中随机取x条不重复的数据

复制代码代码如下:


/*
随机从对象obj中取x条
 */
functionmyRand(){
   varS=KISSY;
   varobj={
       "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"}
   };
   vararr=[];
   S.each(obj,function(v,k){
       arr.push(k);
   });
   //随机取3个
   varnewArr=myRand(arr,3);
   S.each(newArr,function(b){
       console.log(obj[b]);
   })
};

3.去除数组的重复项

复制代码代码如下:
/*
去除数组的重复项
 */
functionuniqArr(arr){
   functiontoObject(a){
       varo={};
       for(vari=0,j=a.length;i<j;i=i+1){
           o[a[i]]=true;
       }
       returno;
   };
   functionkeys(o){
       vara=[],i;
       for(iino){
           if(o.hasOwnProperty(i)){//这里,YUI源码中是lang.hasOwnProperty(o,i)
               a.push(i);
           }
       }
       returna;
   };
   returnkeys(toObject(arr));
}