それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Javascriptのiterationを使ってFlatten

前回まとめたiterator 系の機能map/reduce/each系を上手に使えば、flatten も作れる。このへんはrubyと同じで行けて嬉しいね。

flattenするのも楽ちんだよ。

> [[1],[2],[3],[4]].reduce(function(v,e){ return v.concat(e) },[])
[ 1, 2, 3, 4 ]
>

Array#flatten

上記の例だと、再帰処理しないので、再帰処理追加してOK

> Array.prototype.flatten = function(){ 
 return this.reduce(function(v,e){ if(e instanceof Array){ return e.flatten() } else{   return v.concat(e)} },[] ) 
}
> [[1],[2],[3],[[4]]].flatten()
[ 1, 2, 3, 4 ]

prototypeを使えば結構楽ちんですね。JavaScriptのIteration拡張素晴らしいです。

2014-05-14 追加

flatten を再帰的にした。

広告を非表示にする