You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.6 KiB
59 lines
1.6 KiB
# `unique()`
|
|
|
|
The unique method returns all of the unique items in the collection:
|
|
|
|
```js
|
|
const collection = collect([1, 1, 1, 2, 3, 3]);
|
|
|
|
const unique = collection.unique();
|
|
|
|
unique.all();
|
|
|
|
// [1, 2, 3]
|
|
```
|
|
|
|
When dealing with an array of objects, you may specify the key used to determine uniqueness:
|
|
|
|
```js
|
|
const collection = collect([
|
|
{ name: 'iPhone 6', brand: 'Apple', type: 'phone' },
|
|
{ name: 'iPhone 5', brand: 'Apple', type: 'phone' },
|
|
{ name: 'Apple Watch', brand: 'Apple', type: 'watch' },
|
|
{ name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
|
|
{ name: 'Galaxy Gear', brand: 'Samsung', type: 'watch' },
|
|
]);
|
|
|
|
const unique = collection.unique('brand');
|
|
|
|
unique.all();
|
|
|
|
// [
|
|
// { name: 'iPhone 6', brand: 'Apple', type: 'phone' },
|
|
// { name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
|
|
// ]
|
|
```
|
|
|
|
You may also pass your own callback to determine item uniqueness:
|
|
|
|
```js
|
|
const collection = collect([
|
|
{ name: 'iPhone 6', brand: 'Apple', type: 'phone' },
|
|
{ name: 'iPhone 5', brand: 'Apple', type: 'phone' },
|
|
{ name: 'Apple Watch', brand: 'Apple', type: 'watch' },
|
|
{ name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
|
|
{ name: 'Galaxy Gear', brand: 'Samsung', type: 'watch' },
|
|
]);
|
|
|
|
const unique = collection.unique(item => item.brand + item.type);
|
|
|
|
unique.all();
|
|
|
|
// [
|
|
// { name: 'iPhone 6', brand: 'Apple', type: 'phone' },
|
|
// { name: 'Apple Watch', brand: 'Apple', type: 'watch' },
|
|
// { name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
|
|
// { name: 'Galaxy Gear', brand: 'Samsung', type: 'watch' },
|
|
// ]
|
|
```
|
|
|
|
[View source on GitHub](https://github.com/ecrmnn/collect.js/blob/master/src/methods/unique.js) |