配列内のいくつかのデータをランダムに取得
1374 ワード
以前に受け取ったプロジェクトのニーズは次のとおりです.プラットフォーム:モバイル端末HTML 5、すべてのフロントエンドが を完了実現機能:問題に答えて関門を突破し、1つの問題に答えて次の問題に入り、問題はランダムに問題ライブラリから選択される. ルール:累計9問に正解するとクリアに成功するが、累計4問を間違えるとクリアに失敗し、ゲームは終了する.
問題の解決方法:問題ライブラリに50問題があれば、問題を取るときに1つの問題に答えずにランダムに次の問題を取る必要はありません.これでは効率が低く、論理が複雑になります. ですから、一番いい方法は、ゲームごとに必要な最大テーマ数を計算すればいいのです.ここでは、ユーザーがどれだけ答えても、どれだけ間違っても、毎回最大12のテーマしか使用できません.
したがって,需要は,この長さ50の配列において,そのうち12個をランダムに取得することに簡略化される.
方法は次のとおりです.
コードの注釈は特にはっきりしていて、分かりやすくて、コードは私が書いたのではありませんて、出典は私が見つけることができなくて、書くのがとてもよく勉強すると思います.本プロジェクトでは、私の配列にはテーマオブジェクトが含まれており、テーマタイトル、答えリスト、正解、各テーマの失敗ヒント語が含まれています.これにより、需要の論理を簡単に処理できます.
問題の解決方法:
したがって,需要は,この長さ50の配列において,そのうち12個をランダムに取得することに簡略化される.
方法は次のとおりです.
function getRandomArray(arr,num){
// , , , ;
var temp_array = new Array();
for (var index in arr) {
temp_array.push(arr[index]);
}
// ,
var return_array = new Array();
for (var i = 0; i0) {
//
var arrIndex = Math.floor(Math.random()*temp_array.length);
//
return_array[i] = temp_array[arrIndex];
// , temp_array
temp_array.splice(arrIndex, 1);
} else {
// , , 10 , 20 .
break;
}
}
return return_array;
}
コードの注釈は特にはっきりしていて、分かりやすくて、コードは私が書いたのではありませんて、出典は私が見つけることができなくて、書くのがとてもよく勉強すると思います.本プロジェクトでは、私の配列にはテーマオブジェクトが含まれており、テーマタイトル、答えリスト、正解、各テーマの失敗ヒント語が含まれています.これにより、需要の論理を簡単に処理できます.