Home Reference Source

src/mapcat.js

import apply  from './apply';
import concat from './concat';
import map    from './map';

/**
 * mapした結果をconcatします。apply(concat, map(f, coll))と同じです。
 *
 * @param {function} f - 集合の要素に対して実行する関数
 * @param {*[][] | iterator[]} colls - 集合
 *
 * @return {iterator} 関数の戻り値をconcatした集合のイテレーター
 *
 * @example
 * mapcat(e => e.canUseLanguages(), getEmployees());  // 社員が使用できる言語の集合。イテレーターのイテレーターにならずに、イテレーターになります
 */
export default function mapcat(f, ...colls) {
  return apply(concat, map(f, ...colls));
}