| 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; |