20 lines
530 B
JavaScript
20 lines
530 B
JavaScript
export default function superset(values, other) {
|
|
const iterator = values[Symbol.iterator](), set = new Set();
|
|
for (const o of other) {
|
|
const io = intern(o);
|
|
if (set.has(io)) continue;
|
|
let value, done;
|
|
while (({value, done} = iterator.next())) {
|
|
if (done) return false;
|
|
const ivalue = intern(value);
|
|
set.add(ivalue);
|
|
if (Object.is(io, ivalue)) break;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function intern(value) {
|
|
return value !== null && typeof value === "object" ? value.valueOf() : value;
|
|
}
|