Sort an object by its properties
Rebuild an object with its keys in sorted order.
function sortKeys(object) { return Object.fromEntries(Object.keys(object).sort().map(key => [key, object[key]])); }
Input & expected output
Input
{
"to": "ana@example.com",
"from": "orders@your-verified-domain.example",
"subject": "Order 8812"
}Expected output
{
"from": "orders@your-verified-domain.example",
"subject": "Order 8812",
"to": "ana@example.com"
}The edge case
Input
{
"1": "one",
"2": "two",
"b": 1,
"a": 0
}Expected output
{
"1": "one",
"2": "two",
"a": 0,
"b": 1
}Know the limits
- Integer-like keys always come first in ascending numeric order, whatever you sort, as the edge case shows. Useful for stable JSON before hashing — but sign raw bytes, as webhooks do.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Sort an object by its properties from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Rebuilds with Object.fromEntries; documents integer-key ordering. Original MDX retained as inert source evidence.
Maintained by Oveyon. Original source commit: 14b481cf60df. This edition’s file: contents/sort-an-object-by-its-properties.mdx in akamind/1loc, commit 0a77f131b22d. Read the license.
Keep exploring
- Pick properties from an object — Build a new object with only the requested own properties.
- Omit properties from an object — Keep the own enumerable fields that are not in a supplied list.
- Create an object from pairs of key and value — Turn [key, value] pairs into a plain object with Object.fromEntries.