🌟 JavaScript Data Structures Quiz
Test your knowledge of JavaScript data structures, methods, and modern features!
graph LR
DS["fa:fa-database JavaScript Data Structures"]
%% Arrays Section
Arrays["fa:fa-list Arrays"]
DS -->|"Ordered collection"| Arrays
Arrays -->|"Modification"| ArrMod["fa:fa-pencil-alt Modification"]
Arrays -->|"Query"| ArrQuery["fa:fa-search Query"]
Arrays -->|"Iteration"| ArrIter["fa:fa-sync Iteration"]
Arrays -->|"Transform"| ArrTrans["fa:fa-random Transform"]
Arrays -->|"Order"| ArrOrder["fa:fa-sort Order"]
%% Array Modification - Linear Flow
ArrMod -->|"Add to end"| Push["fa:fa-arrow-right push()"]
Push -->|"Add to start"| Unshift["fa:fa-arrow-left unshift()"]
Unshift -->|"Remove from end"| Pop["fa:fa-times-circle pop()"]
Pop -->|"Remove from start"| Shift["fa:fa-backspace shift()"]
Shift -->|"Add/Remove at index"| Splice["fa:fa-cut splice()"]
Splice -->|"Fill values"| Fill["fa:fa-fill-drip fill()"]
%% Array Query - Linear Flow
ArrQuery -->|"Check existence"| Includes["fa:fa-check includes()"]
Includes -->|"Find index"| IndexOf["fa:fa-search-location indexOf()"]
IndexOf -->|"Get length"| Length["fa:fa-ruler length"]
Length -->|"Find element"| Find["fa:fa-search-plus find()"]
Find -->|"Check condition"| Some["fa:fa-question-circle some()"]
Some -->|"Check all"| Every["fa:fa-check-double every()"]
%% Array Iteration - Linear Flow
ArrIter -->|"For each element"| ForEach["fa:fa-redo forEach()"]
ForEach -->|"Generate entries"| Entries["fa:fa-key entries()"]
Entries -->|"Get iterator"| Iterator["fa:fa-forward Symbol.iterator"]
%% Array Transform - Linear Flow
ArrTrans -->|"Create new array"| Map["fa:fa-map map()"]
Map -->|"Filter elements"| Filter["fa:fa-filter filter()"]
Filter -->|"Accumulate"| Reduce["fa:fa-compress-arrows-alt reduce()"]
Reduce -->|"Get portion"| Slice["fa:fa-layer-group slice()"]
Slice -->|"Join strings"| Join["fa:fa-link join()"]
Join -->|"Flatten"| Flat["fa:fa-layer-group flat()"]
%% Array Order - Linear Flow
ArrOrder -->|"Reverse order"| Reverse["fa:fa-exchange-alt reverse()"]
Reverse -->|"Sort elements"| Sort["fa:fa-sort-alpha-down sort()"]
%% Objects Section
Objects["fa:fa-cube Objects"]
DS -->|"Key-value pairs"| Objects
Objects -->|"Properties"| ObjProp["fa:fa-key Properties"]
Objects -->|"Operations"| ObjOp["fa:fa-cogs Operations"]
Objects -->|"Prototype"| ObjProto["fa:fa-dna Prototype"]
Objects -->|"Descriptors"| ObjDesc["fa:fa-file-signature Descriptors"]
%% Object Properties - Linear Flow
ObjProp -->|"Get all keys"| Keys["fa:fa-key Object.keys()"]
Keys -->|"Get all values"| Values["fa:fa-list-ul Object.values()"]
Values -->|"Get entries"| ObjEntries["fa:fa-th Object.entries()"]
ObjEntries -->|"Destructure"| Destruct["fa:fa-puzzle-piece { a, b = 3 }"]
Destruct -->|"Check property"| HasProp["fa:fa-check-circle hasOwnProperty()"]
%% Object Operations - Linear Flow
ObjOp -->|"Spread"| Spread["fa:fa-copy {...obj}"]
Spread -->|"Merge objects"| Assign["fa:fa-object-group Object.assign()"]
Assign -->|"Freeze object"| Freeze["fa:fa-snowflake Object.freeze()"]
Freeze -->|"Seal object"| Seal["fa:fa-lock Object.seal()"]
Seal -->|"Create object"| Create["fa:fa-plus-circle Object.create()"]
%% Object Prototype - Linear Flow
ObjProto -->|"Get prototype"| GetProto["fa:fa-arrow-up getPrototypeOf()"]
GetProto -->|"Set prototype"| SetProto["fa:fa-arrow-down setPrototypeOf()"]
SetProto -->|"Check in chain"| IsProto["fa:fa-code-branch isPrototypeOf()"]
%% Object Descriptors - Linear Flow
ObjDesc -->|"Define property"| DefProp["fa:fa-edit defineProperty()"]
DefProp -->|"Get descriptor"| GetDesc["fa:fa-info getOwnPropertyDescriptor()"]
%% Map Section
Maps["fa:fa-map Maps"]
DS -->|"Unique keys"| Maps
Maps -->|"Modifications"| MapMod["fa:fa-wrench Methods"]
Maps -->|"Query"| MapQuery["fa:fa-search-plus Query"]
Maps -->|"Iteration"| MapIter["fa:fa-sync Iteration"]
%% Map Modifications - Linear Flow
MapMod -->|"Add/Update"| Set["fa:fa-plus-circle set()"]
Set -->|"Remove"| Delete["fa:fa-minus-circle delete()"]
Delete -->|"Clear all"| Clear["fa:fa-eraser clear()"]
%% Map Query - Linear Flow
MapQuery -->|"Get value"| Get["fa:fa-hand-point-right get()"]
Get -->|"Check key"| Has["fa:fa-check-square has()"]
Has -->|"Count entries"| Size["fa:fa-calculator size"]
%% Map Iteration - Linear Flow
MapIter -->|"Get key-values"| MapEntries["fa:fa-th entries()"]
MapEntries -->|"Get all keys"| MapKeys["fa:fa-key keys()"]
MapKeys -->|"Get all values"| MapValues["fa:fa-list-ul values()"]
%% Set Section
Sets["fa:fa-layer-group Sets"]
DS -->|"Unique values"| Sets
Sets -->|"Modifications"| SetMod["fa:fa-wrench Methods"]
Sets -->|"Query"| SetQuery["fa:fa-search-plus Query"]
Sets -->|"Operations"| SetOp["fa:fa-random Operations"]
%% Set Modifications - Linear Flow
SetMod -->|"Add value"| Add["fa:fa-plus-circle add()"]
Add -->|"Remove value"| DelSet["fa:fa-minus-circle delete()"]
DelSet -->|"Clear all"| ClearSet["fa:fa-eraser clear()"]
%% Set Query - Linear Flow
SetQuery -->|"Check value"| HasSet["fa:fa-check-square has()"]
HasSet -->|"Count values"| SetSize["fa:fa-hashtag size"]
%% Set Operations - Linear Flow
SetOp -->|"Union"| Union["fa:fa-object-group union()"]
Union -->|"Intersection"| Intersect["fa:fa-object-ungroup intersection()"]
Intersect -->|"Difference"| Diff["fa:fa-minus difference()"]
%% Styles
style DS fill:#f9f,stroke:#333,stroke-width:2px
style Arrays fill:#bbf,stroke:#333,stroke-width:2px
style Objects fill:#fbf,stroke:#333,stroke-width:2px
style Maps fill:#bfb,stroke:#333,stroke-width:2px
style Sets fill:#ffb,stroke:#333,stroke-width:2px