test-action-debian-package/node_modules/ramda/es/uniqWith.js
Dawid Dziurla 9308795b8b
update
2020-03-26 15:37:35 +01:00

47 lines
1.2 KiB
JavaScript

import _includesWith from "./internal/_includesWith.js";
import _curry2 from "./internal/_curry2.js";
/**
* Returns a new list containing only one copy of each element in the original
* list, based upon the value returned by applying the supplied predicate to
* two list elements. Prefers the first item if two items compare equal based
* on the predicate.
*
* @func
* @memberOf R
* @since v0.2.0
* @category List
* @sig ((a, a) -> Boolean) -> [a] -> [a]
* @param {Function} pred A predicate used to test whether two items are equal.
* @param {Array} list The array to consider.
* @return {Array} The list of unique items.
* @example
*
* const strEq = R.eqBy(String);
* R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]
* R.uniqWith(strEq)([{}, {}]); //=> [{}]
* R.uniqWith(strEq)([1, '1', 1]); //=> [1]
* R.uniqWith(strEq)(['1', 1, 1]); //=> ['1']
*/
var uniqWith =
/*#__PURE__*/
_curry2(function uniqWith(pred, list) {
var idx = 0;
var len = list.length;
var result = [];
var item;
while (idx < len) {
item = list[idx];
if (!_includesWith(pred, item, result)) {
result[result.length] = item;
}
idx += 1;
}
return result;
});
export default uniqWith;