とりあえずメモ。
時間ができたらデモを作る。
デモ
var WINDOW_APP = WINDOW_APP || {}; WINDOW_APP.util = WINDOW_APP.util || {}; /** * array utility * * @class */ WINDOW_APP.util.arrayUtil = (function () { /** * 要素数の満たない配列を埋める(はみ出した要素を削る機能はなし) * * @param ary {Array} 対象の配列 * @param min {int} 最小要素数 */ function fill (ary, min) { var result = ary.concat(), num = ary.length; //要素数 for(var i = Math.ceil(min / num); i > 0; i--) { result = result.concat(ary); //足りない要素分をくっつける } return result.slice(0, min); } /** * 配列をシャッフル * * @param ary {Array} 対象の配列 * @return {Array} シャッフルされた配列 */ function shuffle (ary) { var result = ary.concat(), rnd, buf; for(var j = ary.length; j > 0; j--) { rnd = Math.round(Math.random () * j + 0.5) - 1; buf = result.splice(rnd, 1)[0]; //該当した要素を末尾に移動 result[result.length] = buf; } return result; } /** * 要素が重複しない配列を取得 * * @param data {Array} 整形する配列 * @return {Array} 重複しない配列 */ function unique(data) { var storage = {}, result = []; for (var i = 0, l = data.length; i < l; i++) { var value = data[i]; if (!(value in storage)) { storage[value] = true; result[result.length] = value; } } return result; } //public return { fill: fill, shuffle: shuffle, unique: unique } }()); //TEST console.log(WINDOW_APP.util.arrayUtil.fill([0,1,2], 10)); //[0, 1, 2, 0, 1, 2, 0, 1, 2, 0] console.log(WINDOW_APP.util.arrayUtil.shuffle([0,1,2,3,4,5,6,7,8,9,10])); //[6, 8, 2, 4, 1, 9, 5, 3, 7, 10, 0] |