|
|
- '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 = Array(_len), _key = 0; _key < _len; _key++) {
- values[_key] = arguments[_key];
- }
-
- return new this.constructor(join([], this.constructor, [].concat([this.items], values)));
- };
|