|
|
- import _includes from "./internal/_includes.js";
- import _curry2 from "./internal/_curry2.js";
- import _filter from "./internal/_filter.js";
- import flip from "./flip.js";
- import uniq from "./uniq.js";
- /**
- * Combines two lists into a set (i.e. no duplicates) composed of those
- * elements common to both lists.
- *
- * @func
- * @memberOf R
- * @since v0.1.0
- * @category Relation
- * @sig [*] -> [*] -> [*]
- * @param {Array} list1 The first list.
- * @param {Array} list2 The second list.
- * @return {Array} The list of elements found in both `list1` and `list2`.
- * @see R.innerJoin
- * @example
- *
- * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]
- */
-
- var intersection =
- /*#__PURE__*/
- _curry2(function intersection(list1, list2) {
- var lookupList, filteredList;
-
- if (list1.length > list2.length) {
- lookupList = list1;
- filteredList = list2;
- } else {
- lookupList = list2;
- filteredList = list1;
- }
-
- return uniq(_filter(flip(_includes)(lookupList), filteredList));
- });
-
- export default intersection;
|