JavaScript
es6
関数型プログラミング

JavaScript:配列をzipWith/zipする関数

そういえばなかったなと思い、自分でも必要になったので作ってみました。

  • 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 = xs => ys => 
    xs.length < ys.length ? xs.map( (e, i) =>[e,  ys[i]] ) : ys.map((e, i) => [xs[i], e] )
//あるいは
//const zip = zipWith( (x, y) => [x, y] )