🔄 Visual Stack Trace: compactObject Function

Test Case:
input = {a: null, b: [false, 1, 0, "hello", ""], c: {d: 0, e: "world"}}
Function Call
Return Value
Skip (Falsy)
Add (Truthy)
Step Call Stack Current Frame Processing Action Result State
1
F1: main object
compactObject({a:null, b:[...], c:{...}}) key "a" → value: null 📞 Call compactObject(null) result = {}
2
F1: main object
F2: null
compactObject(null) obj == null â†Šī¸ RETURN null -
3
F1: main object
Back to F1 compactedValue = null ❌ Boolean(null) = false, SKIP result = {}
4
F1: main object
F1 continues key "b" → value: [false,1,0,"hello",""] 📞 Call compactObject(array) result = {}
5
F1: main object
F3: array
compactObject([false,1,0,"hello",""]) key "0" → value: false 📞 Call compactObject(false) result = []
6
F1: main object
F3: array
F4: false
compactObject(false) typeof false !== 'object' â†Šī¸ RETURN false -
7
F1: main object
F3: array
Back to F3 compactedValue = false ❌ Boolean(false) = false, SKIP result = []
8
F1: main object
F3: array
F3 continues key "1" → value: 1 📞 Call compactObject(1) result = []
9
F1: main object
F3: array
F5: 1
compactObject(1) typeof 1 !== 'object' â†Šī¸ RETURN 1 -
10
F1: main object
F3: array
Back to F3 compactedValue = 1 ✅ Boolean(1) = true, ADD result = [1]
11
F1: main object
F3: array
F3 continues key "2" → value: 0 📞 Call compactObject(0) → Return 0 result = [1]
12
F1: main object
F3: array
Back to F3 compactedValue = 0 ❌ Boolean(0) = false, SKIP result = [1]
13
F1: main object
F3: array
F3 continues key "3" → value: "hello" 📞 Call compactObject("hello") → Return "hello" result = [1]
14
F1: main object
F3: array
Back to F3 compactedValue = "hello" ✅ Boolean("hello") = true, ADD result = [1, "hello"]
15
F1: main object
F3: array
F3 continues key "4" → value: "" 📞 Call compactObject("") → Return "" result = [1, "hello"]
16
F1: main object
F3: array
Back to F3 compactedValue = "" ❌ Boolean("") = false, SKIP result = [1, "hello"]
17
F1: main object
F3: array
F3 Complete All keys processed â†Šī¸ RETURN [1, "hello"] -
18
F1: main object
Back to F1 compactedValue = [1, "hello"] ✅ Boolean(array) = true, ADD result = {b: [1, "hello"]}
19
F1: main object
F1 continues key "c" → value: {d:0, e:"world"} 📞 Call compactObject(nested obj) result = {b: [1, "hello"]}
20
F1: main object
F9: nested obj
compactObject({d:0, e:"world"}) key "d" → value: 0 📞 Call compactObject(0) → Return 0 result = {}
21
F1: main object
F9: nested obj
Back to F9 compactedValue = 0 ❌ Boolean(0) = false, SKIP result = {}
22
F1: main object
F9: nested obj
F9 continues key "e" → value: "world" 📞 Call compactObject("world") → Return "world" result = {}
23
F1: main object
F9: nested obj
Back to F9 compactedValue = "world" ✅ Boolean("world") = true, ADD result = {e: "world"}
24
F1: main object
F9: nested obj
F9 Complete All keys processed â†Šī¸ RETURN {e: "world"} -
25
F1: main object
Back to F1 compactedValue = {e: "world"} ✅ Boolean(object) = true, ADD result = {b: [1, "hello"], c: {e: "world"}}
26 đŸŽ¯ EMPTY F1 Complete All keys processed â†Šī¸ RETURN Final Result FINAL: {b: [1, "hello"], c: {e: "world"}}

📊 Summary