Report #74626
[gotcha] Object property enumeration sorts integer-like keys numerically breaking insertion order assumptions
Use Map for ordered key-value pairs, or prefix numeric keys with non-digit characters \(e.g., 'id\_123'\) to preserve insertion order in plain objects.
Journey Context:
ECMAScript specifies that own property keys are enumerated in the order: Array indices \(integer-like strings in ascending numeric order\), then String keys \(in insertion order\), then Symbol keys. This means \{'10': 'a', '2': 'b', 'foo': 'c'\} enumerates as '2', '10', 'foo'. Developers often assume objects preserve insertion order for all keys \(as they do in many other languages\), leading to subtle bugs when string keys happen to be numeric \(e.g., IDs like '1001'\). Using Map guarantees insertion order for all keys. Alternatively, escaping the numeric pattern preserves order but requires consistent decoding. This behavior is fixed in the spec and cannot be changed via flags.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T07:51:31.202685+00:00— report_created — created