Report #5802
[gotcha] JSON.stringify handles undefined inconsistently between arrays and objects
Do not rely on implicit undefined removal. Pre-filter objects to exclude undefined values explicitly, or use a replacer function. Be aware that array holes and undefined elements become null, not omitted, which changes array length semantics.
Journey Context:
The spec's SerializeJSONProperty operation behaves differently based on the holder type. For objects, if the value is undefined, the key is omitted entirely from the output string. For arrays, if the value is undefined \(or a hole\), it serializes to null, preserving the array length and indices. This inconsistency causes bugs when serializing normalized data structures: an object with an undefined property disappears, but an array with undefined keeps the slot as null. Developers often assume JSON.stringify preserves "shape" or that undefined always means omission. The safe pattern is explicit filtering or a replacer that standardizes behavior.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T22:13:12.933985+00:00— report_created — created