仕事で配列に関連する操作によく遭遇します。
1. データから x 個の一意のデータをランダムに選択します (追記: 以下の S.each は KISSY.each メソッドです。for ループに変更できます)
次のようにコードをコピーします。
/*
配列 arr から x 個の一意のデータをランダムに選択します
*/
関数 myRand(arr,num){
var newArr = [];
rand(num); //ランダムな x
関数 rand(k){
if(k==0){
戻る;
}
var インデックス = Math.floor(Math.random() * arr.length);
var フラグ = true;
S.each(newArr,function(v){
if(v == arr[インデックス]){
フラグ = false;
}
});
if(フラグ){
newArr.push(arr[インデックス]);
k--;
}
ランド(k);
}
newArr を返します。
}
2. オブジェクトから x 個の一意のデータをランダムに選択します
次のようにコードをコピーします。
/*
オブジェクトobjからx個のアイテムをランダムに選択します
*/
関数 myRand(){
var S = キッシー;
var obj={
'01':{名前:'a'}、
'02':{名前:'b'}、
'03':{名前:'c'}、
'04':{名前:'d'}、
'05':{名前:'e'}、
'06':{名前:'f'}、
'07':{名前:'g'}、
'08':{名前:'h'}、
'09':{名前:'i'}、
'10':{名前:'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. 配列から重複を削除する
次のようにコードをコピーします。
/*
配列から重複を削除する
*/
関数 uniqArr(arr){
関数 toObject(a) {
var o = {};
for (var i=0, j=a.length; i<j; i=i+1) {
o[a[i]] = true;
}
を返します。
};
ファンクション キー(o) {
var a=[], i;
for (i in o) {
if (o.hasOwnProperty(i)) { // ここで、YUI ソース コードでは、lang.hasOwnProperty(o, i) になります。
a.push(i);
}
}
を返します。
};
キーを返す(toObject(arr));
}