Map and Set in JavaScript: When and Why to Use Them