這篇文章主要介紹了從數組中隨機取x條不重復數據的JS代碼,有需要的朋友可以參考一下
工作中經常遇到有關數組的一些操作 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)); }