JavaScriptで配列をシャッフルする際に・・・

2011/02/07 | JavaScript/Ajax

この前、JavaScriptで配列をシャッフルする方法について書いた。その際はprototypeプロパティを使い、配列にメソッドを追加(JavaScriptでこういう言い回しが正しいのかどうか分からないけれど)する方法を採用した。しかし別のプログラムとの兼ね合いで、どうしてもprototypeプロパティから追加してはいけない、ということになった(諸般の事情で・・・)。

で、調べたら、同じアルゴリズムで書かれた関数があった。

prototype型

Array.prototype.shuffle = function() {
var i = this.length;
while(i){
var j = Math.floor(Math.random()*i);
var t = this[–i];
this[i] = this[j];
this[j] = t;
}
return this;
}

関数型

function shuffle(a){
var i = a.length;
while(i){
var j = Math.floor(Math.random()*i);
var t = a[–i];
a[i] = a[j];
a[j] = t;
}
return a;
}

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net