UNPKG

@kingjs/from-each

Version:

Generates a sequence of arrays or descriptors composed of a single element each from a set of arrays.

35 lines (27 loc) 731 B
'use strict'; var assert = require('assert'); var { ['@kingjs']: { odometer } } = require('./dependencies'); function* fromEach(namedArrays) { var species = typeof namedArrays == 'array' ? Array : Object; var names = [ ]; if (species == Object) { for (var name in namedArrays) names.push(name); } else { for (var i = 0; i < namedArrays.length; i ++) names.push(i); } var lengths = names.map(name => namedArrays[name].length || 1); for (var indices of odometer(lengths)) { var result = new species(); for (var i = 0; i < names.length; i ++) { var name = names[i]; result[name] = namedArrays[name][indices[i]]; } yield result; } } module.exports = fromEach;