Keerthi Reddy’s Post

🚀 Day 23 of My Angular Journey – JavaScript Interview Problems (Code + Deep Dive) Today, I focused not just on solving problems, but on understanding the logic, edge cases, and performance considerations behind them. 🔹 1. Deep Clone (Object & Array) Problem: Copy nested objects without sharing references Core Logic: - Primitive → return directly - Array → recursively clone each item - Object → recursively copy keys function deepClone(obj) { if (obj === null || typeof obj !== 'object') return obj; if (Array.isArray(obj)) { return obj.map(item => deepClone(item)); } let result = {}; for (let key in obj) { result[key] = deepClone(obj[key]); } return result; } Edge Cases: - "null" (typeof null = object) - Nested arrays/objects - Circular references (needs WeakMap – advanced) Complexity: O(n) 🔹 2. Flatten Array (Recursive + Thinking) Logic: Break problem into smaller parts using recursion function flattenArray(arr) { let result = []; for (let item of arr) { if (Array.isArray(item)) { result = result.concat(flattenArray(item)); } else { result.push(item); } } return result; } Interview Twist: 👉 Can be solved using stack (iterative) instead of recursion Complexity: O(n) 🔹 3. Remove Duplicates (Optimization) Logic: Use Set for O(1) lookup function removeDuplicates(arr) { return [...new Set(arr)]; } Why better than loops? - No nested iteration - Cleaner & faster Complexity: O(n) Without Set function removeDuplicates(str) { let seen = {}; let result = ''; for (let char of str) { if (!seen[char]) { seen[char] = true; result += char; } } return result; } 🔹 4. First Non-Repeating Character Logic: - Step 1 → Count frequency - Step 2 → Find first unique function firstNonRepeating(str) { let count = {}; for (let char of str) { count[char] = (count[char] || 0) + 1; } for (let char of str) { if (count[char] === 1) return char; } return null; } Advanced Insight: 👉 Optimized using Map + Queue for real-time processing 🔹 5. Flatten Object (Real-world Application) Use Case: APIs, form data, payload transformation function flattenObject(obj, parent = '', res = {}) { for (let key in obj) { let newKey = parent ? `${parent}.${key}` : key; if (typeof obj[key] === 'object' && obj[key] !== null) { flattenObject(obj[key], newKey, res); } else { res[newKey] = obj[key]; } } return res; } Example Output: "{ user: { name: "A" } } → { "user.name": "A" }" Key Learnings from Today: ✔ Recursion to solve nested problems ✔ Stack vs recursion thinking ✔ Hashing (Map/Object) for efficient lookup ✔ Choosing right data structure (Set vs Array) ✔ Handling real-world edge cases #JavaScript #Angular #FrontendDevelopment #CodingInterview #LearningJourney

To view or add a comment, sign in

Explore content categories