配列をランダムに並べ替えるメソッド

ぐるぐるポンで、配列をランダムに並べ替えて連結、ということをやってるのですが、そもそもASに配列をランダムに並べ替えるメソッドが無いので、自作する しかないんですよね。

ググれば出てきたかもしれないんですが、難しいことでもないので、探すより早いと思って自分で考えて作りました。

最初はこうだったんだけど

function shuffleArray(arr:Array):Array {
    var retArr:Array = new Array();
    while (arr.length > 0) {
        retArr.push(arr.splice(Math.floor(Math.random() * arr.length), 1).toString());
    }
    return retArr;
}

これだと配列の要素が全部Stringになっちゃうんで
こうしました

function shuffleArray(arr:Array):Array {
    var shArr:Array=new Array();
    for (var i:uint=0; i<arr.length; i++) {
        var tempObj:Object=new Object();
        tempObj.val=arr[i];
        tempObj.key=Math.random();
        shArr.push(tempObj);
        tempObj=null;
    }
    shArr.sortOn('key',Array.NUMERIC);
    var retArr:Array=new Array();
    for (var j:uint=0; j<shArr.length; j++) {
        retArr.push(shArr[j].val);
    }
    shArr=null;
    return retArr;
}

よろしくどうぞ☆

人気の記事

タグ: , , , , , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

Top