この記事では主に、配列から x 個の重複しないデータをランダムに選択するための JS コードを紹介します。必要な友人はそれを参照できます。
配列に関連するいくつかの操作は仕事でよく遭遇します
1. データからランダムに x 個のユニークなデータを選択します (追記: 以下の 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)); }
上記はこの章の全内容です。関連するチュートリアルについては、こちらをご覧ください。 JavaScript ビデオチュートリアル にアクセスしてください!