UNPKG

@extra-array/is-unique

Version:

Checks if there are no duplicate values.

35 lines (34 loc) 769 B
function id(v) { return v; } function cmp(a, b) { return a < b ? -1 : (a > b ? 1 : 0); } function isUniqueMap(x, fm = null) { var fm = fm || id; var s = new Set(), i = -1; for (var v of x) { var v1 = fm(v, ++i, x); if (s.has(v1)) return false; s.add(v1); } return true; } function isUniqueDual(x, fc = null, fm = null) { var fc = fc || cmp, fm = fm || id; var x1 = [...x].map(fm); for (var u1 of x1) { for (var v1 of x1) if (fc(u1, v1) === 0) return false; } return true; } function isUnique(x, fc = null, fm = null) { if (fc) return isUniqueDual(x, fc, fm); else return isUniqueMap(x, fm); } export { isUnique as default };