そういえばなかったなと思い、自分でも必要になったので作ってみました。
- 2引数関数fと配列xsとysを引数に
- 要素数の少ない方に合わせて
- xs,ysの要素にfを適用して配列にする
const zipWith = f => xs => ys =>
(xs.length < ys.length)? xs.map( (e, i) => f( e, ys[i] ) )
: ys.map( (e, i) => f( xs[i], e) )
zipは配列xs、ysの同インデックスの要素からなる配列の配列を返します。
const zip = zipWith( (x, y) => [x, y] )
//あるいは
const zip = xs => ys =>
(xs.length < ys.length) ? xs.map( (e, i) =>[e, ys[i]] )
: ys.map((e, i) => [xs[i], e] );