@dashkite/joy
Version:
*The simplicity of Lodash with the functional flair of Rambda.*
65 lines (64 loc) • 8.14 kB
JavaScript
var complement, difference, dupes, intersection, union, unique;
import { curry } from "./function";
union = function(ax, bx) {
var b, cx;
cx = new Set(ax);
for (b of bx){
cx.add(b);
}
return cx;
};
intersection = curry(function(ax, bx) {
var a, cx;
bx = new Set(bx);
cx = new Set();
for (a of ax){
if (bx.has(a)) {
cx.add(a);
}
}
return cx;
});
complement = function(ax, bx) {
var cx, d, dx;
ax = new Set(ax);
bx = new Set(bx);
cx = new Set();
dx = union(ax, bx);
for (d of dx){
if (!bx.has(d) || !ax.has(d)) {
cx.add(d);
}
}
return cx;
};
difference = function(ax, bx) {
var a, cx;
bx = new Set(bx);
cx = new Set();
for (a of ax){
if (!bx.has(a)) {
cx.add(a);
}
}
return cx;
};
unique = function(ax) {
return new Set(ax);
};
dupes = function(ax) {
var a, bx, cx;
bx = new Set(); // items we've seen at least once
cx = new Set(); // items we've seen at least twice
for (a of ax){
if (bx.has(a)) {
cx.add(a);
} else {
bx.add(a);
}
}
return cx;
};
export { union, intersection, complement, difference, unique, dupes }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3NldC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxVQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsRUFBQSxZQUFBLEVBQUEsS0FBQSxFQUFBOztBQUFBLE9BQUE7RUFBUSxLQUFSO0NBQUEsTUFBQTs7QUFFQSxLQUFBLEdBQVEsUUFBQSxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQUE7QUFDUixNQUFBLENBQUEsRUFBQTtFQUFFLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBUSxFQUFSO0VBQ0wsS0FBQSxPQUFBO0lBQUEsRUFBRSxDQUFDLEdBQUgsQ0FBTyxDQUFQO0VBQUE7U0FDQTtBQUhNOztBQUtSLFlBQUEsR0FBZSxLQUFBLENBQU0sUUFBQSxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQUE7QUFDckIsTUFBQSxDQUFBLEVBQUE7RUFBRSxFQUFBLEdBQUssSUFBSSxHQUFKLENBQVEsRUFBUjtFQUNMLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBQTtFQUNMLEtBQUEsT0FBQTtRQUE0QixFQUFFLENBQUMsR0FBSCxDQUFPLENBQVA7TUFBNUIsRUFBRSxDQUFDLEdBQUgsQ0FBTyxDQUFQOztFQUFBO1NBQ0E7QUFKbUIsQ0FBTjs7QUFNZixVQUFBLEdBQWEsUUFBQSxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQUE7QUFDYixNQUFBLEVBQUEsRUFBQSxDQUFBLEVBQUE7RUFBRSxFQUFBLEdBQUssSUFBSSxHQUFKLENBQVEsRUFBUjtFQUNMLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBUSxFQUFSO0VBQ0wsRUFBQSxHQUFLLElBQUksR0FBSixDQUFBO0VBQ0wsRUFBQSxHQUFLLEtBQUEsQ0FBTSxFQUFOLEVBQVUsRUFBVjtFQUNMLEtBQUEsT0FBQTtRQUE0QixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUgsQ0FBTyxDQUFQLENBQUQsQ0FBRCxJQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBSCxDQUFPLENBQVAsQ0FBRDtNQUE1QyxFQUFFLENBQUMsR0FBSCxDQUFPLENBQVA7O0VBQUE7U0FDQTtBQU5XOztBQVFiLFVBQUEsR0FBYSxRQUFBLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBQTtBQUNiLE1BQUEsQ0FBQSxFQUFBO0VBQUUsRUFBQSxHQUFLLElBQUksR0FBSixDQUFRLEVBQVI7RUFDTCxFQUFBLEdBQUssSUFBSSxHQUFKLENBQUE7RUFDTCxLQUFBLE9BQUE7UUFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFILENBQU8sQ0FBUCxDQUFEO01BQTdCLEVBQUUsQ0FBQyxHQUFILENBQU8sQ0FBUDs7RUFBQTtTQUNBO0FBSlc7O0FBTWIsTUFBQSxHQUFTLFFBQUEsQ0FBQyxFQUFELENBQUE7U0FBUSxJQUFJLEdBQUosQ0FBUSxFQUFSO0FBQVI7O0FBRVQsS0FBQSxHQUFRLFFBQUEsQ0FBQyxFQUFELENBQUE7QUFDUixNQUFBLENBQUEsRUFBQSxFQUFBLEVBQUE7RUFBRSxFQUFBLEdBQUssSUFBSSxHQUFKLENBQUEsRUFBUDtFQUNFLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBQSxFQURQO0VBRUUsS0FBQSxPQUFBO0lBQ0UsSUFBRyxFQUFFLENBQUMsR0FBSCxDQUFPLENBQVAsQ0FBSDtNQUFpQixFQUFFLENBQUMsR0FBSCxDQUFPLENBQVAsRUFBakI7S0FBQSxNQUFBO01BQStCLEVBQUUsQ0FBQyxHQUFILENBQU8sQ0FBUCxFQUEvQjs7RUFERjtTQUVBO0FBTE07O0FBT1IsT0FBQTtFQUNFLEtBREY7RUFFRSxZQUZGO0VBR0UsVUFIRjtFQUlFLFVBSkY7RUFLRSxNQUxGO0VBTUUsS0FORiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3Vycnl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxudW5pb24gPSAoYXgsIGJ4KSAtPlxuICBjeCA9IG5ldyBTZXQgYXhcbiAgY3guYWRkIGIgZm9yIGIgZnJvbSBieFxuICBjeFxuXG5pbnRlcnNlY3Rpb24gPSBjdXJyeSAoYXgsIGJ4KSAtPlxuICBieCA9IG5ldyBTZXQgYnhcbiAgY3ggPSBuZXcgU2V0XG4gIGN4LmFkZCBhIGZvciBhIGZyb20gYXggd2hlbiBieC5oYXMgYVxuICBjeFxuXG5jb21wbGVtZW50ID0gKGF4LCBieCkgLT5cbiAgYXggPSBuZXcgU2V0IGF4XG4gIGJ4ID0gbmV3IFNldCBieFxuICBjeCA9IG5ldyBTZXRcbiAgZHggPSB1bmlvbiBheCwgYnhcbiAgY3guYWRkIGQgZm9yIGQgZnJvbSBkeCB3aGVuICEoYnguaGFzIGQpIHx8ICEoYXguaGFzIGQpXG4gIGN4XG5cbmRpZmZlcmVuY2UgPSAoYXgsIGJ4KSAtPlxuICBieCA9IG5ldyBTZXQgYnhcbiAgY3ggPSBuZXcgU2V0XG4gIGN4LmFkZCBhIGZvciBhIGZyb20gYXggd2hlbiAhKGJ4LmhhcyBhKVxuICBjeFxuXG51bmlxdWUgPSAoYXgpIC0+IG5ldyBTZXQgYXhcblxuZHVwZXMgPSAoYXgpIC0+XG4gIGJ4ID0gbmV3IFNldCAjIGl0ZW1zIHdlJ3ZlIHNlZW4gYXQgbGVhc3Qgb25jZVxuICBjeCA9IG5ldyBTZXQgIyBpdGVtcyB3ZSd2ZSBzZWVuIGF0IGxlYXN0IHR3aWNlXG4gIGZvciBhIGZyb20gYXhcbiAgICBpZiBieC5oYXMgYSB0aGVuIGN4LmFkZCBhIGVsc2UgYnguYWRkIGFcbiAgY3hcblxuZXhwb3J0IHtcbiAgdW5pb25cbiAgaW50ZXJzZWN0aW9uXG4gIGNvbXBsZW1lbnRcbiAgZGlmZmVyZW5jZVxuICB1bmlxdWVcbiAgZHVwZXNcbn1cbiJdfQ==
//# sourceURL=/@dashkite/joy/src/set.coffee
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvc2V0LmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuXG51bmlvbiA9IChheCwgYngpIC0+XG4gIGN4ID0gbmV3IFNldCBheFxuICBjeC5hZGQgYiBmb3IgYiBmcm9tIGJ4XG4gIGN4XG5cbmludGVyc2VjdGlvbiA9IGN1cnJ5IChheCwgYngpIC0+XG4gIGJ4ID0gbmV3IFNldCBieFxuICBjeCA9IG5ldyBTZXRcbiAgY3guYWRkIGEgZm9yIGEgZnJvbSBheCB3aGVuIGJ4LmhhcyBhXG4gIGN4XG5cbmNvbXBsZW1lbnQgPSAoYXgsIGJ4KSAtPlxuICBheCA9IG5ldyBTZXQgYXhcbiAgYnggPSBuZXcgU2V0IGJ4XG4gIGN4ID0gbmV3IFNldFxuICBkeCA9IHVuaW9uIGF4LCBieFxuICBjeC5hZGQgZCBmb3IgZCBmcm9tIGR4IHdoZW4gIShieC5oYXMgZCkgfHwgIShheC5oYXMgZClcbiAgY3hcblxuZGlmZmVyZW5jZSA9IChheCwgYngpIC0+XG4gIGJ4ID0gbmV3IFNldCBieFxuICBjeCA9IG5ldyBTZXRcbiAgY3guYWRkIGEgZm9yIGEgZnJvbSBheCB3aGVuICEoYnguaGFzIGEpXG4gIGN4XG5cbnVuaXF1ZSA9IChheCkgLT4gbmV3IFNldCBheFxuXG5kdXBlcyA9IChheCkgLT5cbiAgYnggPSBuZXcgU2V0ICMgaXRlbXMgd2UndmUgc2VlbiBhdCBsZWFzdCBvbmNlXG4gIGN4ID0gbmV3IFNldCAjIGl0ZW1zIHdlJ3ZlIHNlZW4gYXQgbGVhc3QgdHdpY2VcbiAgZm9yIGEgZnJvbSBheFxuICAgIGlmIGJ4LmhhcyBhIHRoZW4gY3guYWRkIGEgZWxzZSBieC5hZGQgYVxuICBjeFxuXG5leHBvcnQge1xuICB1bmlvblxuICBpbnRlcnNlY3Rpb25cbiAgY29tcGxlbWVudFxuICBkaWZmZXJlbmNlXG4gIHVuaXF1ZVxu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