shallow-contains
Version:
partial shallow equality comparison between two values
45 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function shallowContains(input, contains, comparator) {
const equals = comparator || ((a, b) => a === b);
if (Array.isArray(contains) || contains instanceof Set) {
const inputSet = toSet(input);
for (let v of contains) {
if (!comparator) {
if (!inputSet.has(v))
return false;
}
else {
for (let inputVal of inputSet) {
if (equals(inputVal, v))
return true;
}
}
}
return true;
}
const containsEntries = toEntries(contains);
const isMap = input instanceof Map;
for (let [k, v] of containsEntries) {
const inputVal = isMap ? input.get(k) : input[k];
if (!equals(inputVal, v))
return false;
}
return true;
}
exports.default = shallowContains;
function toSet(val) {
if (Array.isArray(val))
return new Set(val);
if (val instanceof Set)
return val;
if (val instanceof Map)
return new Set(val.values());
// @ts-ignore
return new Set(Object.values(val));
}
function toEntries(val) {
// @ts-ignore
return val.entries ? val.entries() : Object.entries(val);
}
//# sourceMappingURL=index.js.map