diff options
Diffstat (limited to 'tools/eslint/node_modules/lodash/intersectionWith.js')
-rw-r--r-- | tools/eslint/node_modules/lodash/intersectionWith.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/lodash/intersectionWith.js b/tools/eslint/node_modules/lodash/intersectionWith.js new file mode 100644 index 0000000000..c39e38f533 --- /dev/null +++ b/tools/eslint/node_modules/lodash/intersectionWith.js @@ -0,0 +1,40 @@ +var arrayMap = require('./_arrayMap'), + baseIntersection = require('./_baseIntersection'), + last = require('./last'), + rest = require('./rest'), + toArrayLikeObject = require('./_toArrayLikeObject'); + +/** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ +var intersectionWith = rest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, toArrayLikeObject); + + if (comparator === last(mapped)) { + comparator = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; +}); + +module.exports = intersectionWith; |