あまりつかえないArrayメソッドを作ってみた
Haskellの関数を実装してみる。4章(普通のHaskellプログラミング)までで簡単にできそうなものを。
// http://la.ma.la/blog/diary_200510062243.htm Array.prototype.clone = function(){ var tmp = []; for(var i=0;i<this.length;i++){ tmp[i] = this[i] } return tmp } Array.prototype.take = function(n) { return this.slice(0,n); } Array.prototype.unwords = function() { return this.join(" "); } Array.prototype.tails = function() { var ary = this.clone(); var tmp = ary.clone(); var result = new Array(tmp); for(var i=0,len=ary.length;i<len;i++) { ary.shift(); tmp = ary.clone(); result.push(tmp); } return result; }
実行例
js> a=[1,2,3,4,5] 1,2,3,4,5 js> a.take(3) 1,2,3 js> a.unwords() 1 2 3 4 5 js> a.tails() 1,2,3,4,5,2,3,4,5,3,4,5,4,5,5, // [[1,2,3,4,5],[2,3,4,5],[3,4,5],[4,5],[5],[]] となってるはず。
一番上のclone()はtails()を作るために拝借。
同じく紹介されていたclone()メソッド
Array.prototype.clone = function(){ return Array.apply(null,this) }
だとうまくいかなかったので上のを使った。
あぁコメント欄に書いてあった。