从数组中随机取x条不重复数据的JS代码
工作中经常遇到有关数组的一些操作
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));
}
相关文章