| var _curry2 = | |
| /*#__PURE__*/ | |
| require("./internal/_curry2"); | |
| var _Set = | |
| /*#__PURE__*/ | |
| require("./internal/_Set"); | |
| /** | |
| * Finds the set (i.e. no duplicates) of all elements in the first list not | |
| * contained in the second list. Objects and Arrays are compared in terms of | |
| * value equality, not reference equality. | |
| * | |
| * @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 elements in `list1` that are not in `list2`. | |
| * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without | |
| * @example | |
| * | |
| * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2] | |
| * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5] | |
| * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] | |
| */ | |
| var difference = | |
| /*#__PURE__*/ | |
| _curry2(function difference(first, second) { | |
| var out = []; | |
| var idx = 0; | |
| var firstLen = first.length; | |
| var secondLen = second.length; | |
| var toFilterOut = new _Set(); | |
| for (var i = 0; i < secondLen; i += 1) { | |
| toFilterOut.add(second[i]); | |
| } | |
| while (idx < firstLen) { | |
| if (toFilterOut.add(first[idx])) { | |
| out[out.length] = first[idx]; | |
| } | |
| idx += 1; | |
| } | |
| return out; | |
| }); | |
| module.exports = difference; |