Home Reference Source

src/takeNth.js

import sequence from './sequence';

/**
 * n個単位に要素を抽出した集合のイテレーターを返します。
 *
 * @param {number} n - 取得する要素の場所
 * @param {*[] | iterator | null} coll - 集合
 *
 * @return {iterator} n番目の要素、n * 2番目の要素、n * 3番目の要素...の集合のイテレーター
 *
 * @example
 * takeNth(2, range());  [0, 2, 4, 6, 8, 10...]のイテレーター
 */
export default function* takeNth(n, coll) {
  let i = 0;

  for (const x of sequence(coll)) {
    if (i++ % n === 0) {
      yield x;
    }
  }
}