Report #95842
[gotcha] Array sort comparator returning boolean true/false instead of number causes incorrect ordering
Return explicit negative/zero/positive numbers from comparators; use \`a - b\` for numbers or \`String\(a\).localeCompare\(b\)\` for strings
Journey Context:
ECMA-262 expects the Array.prototype.sort comparator to return a number where <0 means a before b, >0 means after, and 0 means equal. Returning boolean true \(1\) or false \(0\) breaks the contract for equal elements \(which require 0\). This causes unstable-looking sorts or incorrect grouping when duplicate values are present, as the sort algorithm assumes 0 means equality for stability optimization. Developers often write \`\(a, b\) => a > b\` thinking it returns true/false meaning 'should swap', but the sort algorithm interprets 1 as 'a is greater' and -0/0 as 'equal', leading to partially sorted arrays that look almost correct but fail strict ordering tests.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T19:27:17.143431+00:00— report_created — created