2009/08/11

[js]map,iota,times

download - map.iota.times.js

 

map, iotaは何度か同じようなの書いてる。

timesはNumberクラスいじったらできるんじゃね?って思ったらできた。

 

// Arrayクラスのprototypeにmapを追加
Array.prototype.map = function (f)
{
  var ret = [];

  for (var i = 0; i < this.length; i++)
  {
    ret = f(this[i]);
  }
  return ret;
};

 

// Arrayクラスにiotaクラスメソッドを追加(したつもり)
Array.iota = function (cnt, init, inc)
{
  init = init || 0;
  inc = inc || 1;

  var ret = [];

  for (var i = 0, j = init; ret.length < cnt; i++, j = j + inc)
  {
    ret[i] = j;
  }

  return ret;
};

 

/*
js> Array.iota(10)
0,1,2,3,4,5,6,7,8,9


js> Array.iota(10, 10)
10,11,12,13,14,15,16,17,18,19


js> Array.iota(10, 2, 2)
2,4,6,8,10,12,14,16,18,20
*/

 

// 数値(Numberクラス?)のprototypeにtimesメソッドを追加
Number.prototype.times = function (f)
{
  var ret = [];
  for (var i = 0; i < Math.abs(this); i++)
  {
    ret[i] = f(i);
  }
  return ret;
};

/*
js> (10).times(function (i)
{
  print (i);
});
0
1
2
3
4
5
6
7
8
9
,,,,,,,,,

 

js> (10).times(function (i) { print ('hello'); })
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
,,,,,,,,,
js>
*/

0 件のコメント:

コメントを投稿