| 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"}} |