JavaScriptの配列を拡張してみる(1)
痒いところに手が届かないJavaScriptの配列・・・
まずは個人的に良く使うシャッフル関数を拡張します。
1. Array.prototype.shuffle = function(){ 2. var i = this.length; 3. while(i){ 4. var j = Math.floor( Math.random() * i ); 5. var t = this[--i]; 6. this[i] = this[j]; 7. this[j] = t; 8. } 9. return this; 10. }
1行目:
Arrayオブジェクトのプロトタイプにshuffle関数を実装します。
2〜8行:
配列の長さを取得し、その長さ分デクリメントしながらループさせます。
4行目:
配列の長さを上限にした乱数を取得し、それを整数に繰り下げ(※配列は0から数えられるため)、変数jに代入しておく。
5行目:
ループカウンタをデクリメントした位置の値を変数tに代入しておく。
6行目:
ループカウンタの位置の値を、乱数で取得した変数jの位置の値で置き換える。
7行目:
乱数で取得した変数jの位置の値を、変数tで置き換える。
9行目:
配列を返す。
使い方は簡単です。
1. // 配列listを生成 2. var list = [1,2,3,4,5]; 3. // 配列listをシャッフルする 4. list.shuffle(); 5. console.log(list); // [2,5,3,1,4]
JavaScriptを覚えるなら
![]() | 新品価格 |
![](http://www12.a8.net/0.gif?a8mat=1ZQW8W+BB8IK2+249K+BWGDT)
コメント
コメントはありません。