最新版は下記です。
/** * range * 範囲内の値を持った配列を作成する * @param {number} min 範囲の最小値 * @param {number} max 範囲の最大値 * @param {function} filer フィルタ関数 * @return {array} 作成した配列 */ function range(min, max, filter){ var ary = []; for(i = min;i <= max;i++){ //フィルタが未定義か、フィルタに合致する値のみpush if(filter === void 0 || filter(i)){ ary.push(i); } } return ary; } //通常 console.log(range(0,10)); // -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] //偶数 console.log(range(0,10,function(val){return val % 2 === 0})); // -> [0, 2, 4, 6, 8, 10] //奇数 console.log(range(0,10,function(val){return val % 2 === 1})); // -> [1, 3, 5, 7, 9]