Maps and Sets
Set Membership
Check whether a value belongs to a set.
set-membership
Use `.has(value)` when membership matters more than position. A set membership check is clearer than searching through a list by hand.
Set Membership
set_has.js
Replay: real traced execution (multi-file project)
const role = "viewer";
const canEdit = new Set(["admin", "editor"]).has(role);
const label = canEdit ? "allowed" : "blocked";
console.log("role=" + role);
console.log("label=" + label);
const role = "admin";
const canEdit = new Set(["admin", "editor"]).has(role);
const label = canEdit ? "allowed" : "blocked";
console.log("role=" + role);
console.log("label=" + label);
const role = "editor";
const canEdit = new Set(["admin", "editor"]).has(role);
const label = canEdit ? "allowed" : "blocked";
console.log("role=" + role);
console.log("label=" + label);
role ← viewer, canEdit ← false, label ← blocked
1const role→ viewer = "viewer"; //@role="admin", "editor"2const canEdit→ false = new Set(["admin", "editor"]).has(roleviewer);3const label→ blocked = canEditfalse ? "allowed" : "blocked";45console.log("role=" + roleviewer);6console.log("label=" + labelblocked);outputrole=viewer label=blocked
role ← admin, canEdit ← true, label ← allowed
1const role→ admin = "admin";2const canEdit→ true = new Set(["admin", "editor"]).has(roleadmin);3const label→ allowed = canEdittrue ? "allowed" : "blocked";45console.log("role=" + roleadmin);6console.log("label=" + labelallowed);outputrole=admin label=allowed
role ← editor, canEdit ← true, label ← allowed
1const role→ editor = "editor";2const canEdit→ true = new Set(["admin", "editor"]).has(roleeditor);3const label→ allowed = canEdittrue ? "allowed" : "blocked";45console.log("role=" + roleeditor);6console.log("label=" + labelallowed);outputrole=editor label=allowed