🟨 JavaScript Array β€” Complete Topic Index

Parent: DSA Master Index


πŸ“¦ Subtopics

#SubtopicFileKey Concepts
1Array Basics01-basics/Creation, destructuring, spread, CRUD, common mistakes
2JS Array Methods02-js-array-methods/map, filter, reduce, find, flat, every, some + when to use
3Sorting03-sorting/Array.sort() gotchas, comparators, all algorithms
4Searching04-searching/indexOf, find, binary search, 2D matrix
5Two Pointers05-two-pointers/Pair sum, palindrome, trap water
6Sliding Window06-sliding-window/Fixed/variable window, Map-based frequency
7Prefix Sum07-prefix-sum/Range queries, Kadane's, subarray sum = k
8Interview Questions08-interview-questions/Top 20 JS questions with solutions

🧠 JavaScript Array β€” Big Picture

Array (JS)
 β”œβ”€β”€ Creation              β†’ literal, Array(), from(), of()
 β”œβ”€β”€ Built-in Methods      β†’ 30+ methods (mutating vs non-mutating)
 β”œβ”€β”€ Sorting               β†’ .sort() quirks, custom comparators
 β”œβ”€β”€ Searching             β†’ find/indexOf + binary search
 β”œβ”€β”€ Two Pointers          β†’ O(n) for O(nΒ²) problems
 β”œβ”€β”€ Sliding Window        β†’ Subarray / substring problems
 └── Prefix Sum            β†’ Precompute for O(1) range queries

⏱️ Time Complexity Cheat Sheet

OperationJS ArrayNotes
Access by indexO(1)Direct
push / popO(1)End of array
shift / unshiftO(n)Start shifts all elements
splice (middle)O(n)Shifts elements
indexOf / includesO(n)Linear scan
sort()O(n log n)TimSort in V8
map / filter / reduceO(n)Each iterates once
flat(depth)O(n*d)d = depth level

🎯 Interview Pattern Recognition

Keyword in QuestionTechnique to Use
"subarray of size k"Sliding Window (Fixed)
"longest subarray with..."Sliding Window (Variable)
"pair that sums to X"Two Pointers
"duplicates"Set or Map
"sorted array, find..."Binary Search
"range sum", "prefix"Prefix Sum
"sort this array"Array.sort() with comparator
"frequency of elements"Map counter
"rotate array"Two Pointers (reverse trick)
"unique elements"Set

⚑ JS-Specific Quick Reference

TaskMethod
Remove duplicates[...new Set(arr)]
Flatten arrayarr.flat(Infinity)
Sum all elementsarr.reduce((a,b) => a+b, 0)
Max valueMath.max(...arr)
Check all passarr.every(x => x > 0)
Check any passarr.some(x => x > 0)
Find first matcharr.find(x => x > 5)
Group by propertyarr.reduce((acc, x) => ...)
Clone array[...arr] or arr.slice()
Fill with valuenew Array(n).fill(0)