Get unique objects from an array by key

Keep one record per key value, the last one seen.

JavaScript Version 1.0.0 · MIT · .md

get-unique-arr-obj.js
function uniqueBy({ objects, key }) { return [...new Map(objects.map(item => [item[key], item])).values()]; }

Input & expected output

Input

{
  "objects": [
    {
      "recipient": "[email protected]",
      "status": "deferred"
    },
    {
      "recipient": "[email protected]",
      "status": "delivered"
    },
    {
      "recipient": "[email protected]",
      "status": "delivered"
    }
  ],
  "key": "recipient"
}

Expected output

[
  {
    "recipient": "[email protected]",
    "status": "delivered"
  },
  {
    "recipient": "[email protected]",
    "status": "delivered"
  }
]

The edge case

Input

{
  "objects": [],
  "key": "id"
}

Expected output

[]

Know the limits

  • The last record per key wins, in the position of the first one — handy for keeping the latest state per recipient.

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 Returns an object with unique values by key from the original 1loc collection by Nguyen Huu Phuoc, with gpbuavv. Copyright (c) 2020 phuoc-ng. MIT licensed.

Curated implementation; explicit input contract, edge case and limits. Original MDX retained as inert source evidence.

Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.

Local fixture scope · Node.js 22.23.2 · reviewed October 28, 2026. No external service is required.

Keep exploring

Type two or more characters. Try “duplicate”, “webhook” or “retry”.