← All pipes
Collections

uniqueBy

Readonly object arrays; retain `first` by default or `last` explicitly.

Use it in your component

Standalone component
import { Component } from '@angular/core';
import { JsonPipe } from '@angular/common';
import { UniqueByPipe } from 'extra-pipe';

@Component({
  standalone: true,
  imports: [UniqueByPipe, JsonPipe],
  template: `{{ items | uniqueBy: 'id': 'last' | json }}`,
})
export class ExampleComponent {
readonly items = [{id:1,name:'old'},{id:2,name:'two'},{id:1,name:'new'}];
}

Template
{{ items | uniqueBy: 'id': 'last' | json }}

Try it live.

The output below runs the packed library. Edit data, not code.

Use double quotes for text, or a number, array, object or null.
Ordered parameters: key, retain. Locale is controlled separately.
This pipe has no locale override.
Live template data
readonly value = [
  {
    "id": 1,
    "name": "old"
  },
  {
    "id": 2,
    "name": "two"
  },
  {
    "id": 1,
    "name": "new"
  }
] as const;
readonly parameter0 = "id";
readonly parameter1 = "last";
{{ value | uniqueBy: parameter0: parameter1 | json }}

Rendered output

[
  {
    "id": 2,
    "name": "two"
  },
  {
    "id": 1,
    "name": "new"
  }
]