UNPKG

shallow-contains

Version:

partial shallow equality comparison between two values

42 lines 1.26 kB
export default 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; } 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