12345678910111213141516171819202122232425262728293031323334 |
- 'use strict';
- module.exports = function crossJoin() {
- function join(collection, constructor, args) {
- var current = args[0];
- if (current instanceof constructor) {
- current = current.all();
- }
- var rest = args.slice(1);
- var last = !rest.length;
- var result = [];
- for (var i = 0; i < current.length; i += 1) {
- var collectionCopy = collection.slice();
- collectionCopy.push(current[i]);
- if (last) {
- result.push(collectionCopy);
- } else {
- result = result.concat(join(collectionCopy, constructor, rest));
- }
- }
- return result;
- }
- for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
- values[_key] = arguments[_key];
- }
- return new this.constructor(join([], this.constructor, [].concat([this.items], values)));
- };
|