昨年末、一番嬉しかったのはAIとの対話だった。人間相手でないところがなんとも。が、まあAI爆発元年だったから、らしいといえばらしい。

問題は “filter”。思えばSICPもここで止まってたんだよな(恥ずかしい告白)。javascriptでもfilterは使えるのだが、書式、特に”return”の部分でこけた。これを機会にリベンジ。最終的に理解が間違えていないか対話をしながら腑に落としていった。
そん時のメモ。
jsの場合、filterは真偽(true/false)を返す(return)関数(function…return)を配列(array)に対して自動的に新たな配列を返す機能を持つ。
このとき肝になるのが、”return ….” されるのが、「真偽を返すだけの関数」であること。例えば最初のメモの最後にあるような “>, <, ===”などだ。”funciton(i){return…}”1は真偽(true/false)「だけ」を返す奇妙な関数なのだ。実に気持ち悪い。だが、js の filter はここから、自動的に:真偽のうち真になった array の要素だけを別の配列として返す、という離れ業をやってのけるのである。
- ここでの “i” は array.filter… の array(配列)の一つの要素。filterはarrayの要素を一つずつ、function に流し込んでいくイメージ。 ↩︎
