0

In the following array, there is duplicate elements (with same dates and ids)

[{date: "2018-02-20", id: "ccff5cae-0d38-450d-90f9-2490256db84c"},
{date: "2018-02-21", id: "8ffc7266-6a19-40a7-b181-7c7d73be8467"},
{date: "2018-02-22", id: "147afdd1-8c8b-4fde-b992-d8d8465a1771"},
{date: "2018-02-23", id: "72f10683-17a5-49d1-9e78-5fc2b380a314"},
{date: "2018-02-24", id: "2d2cd12c-2472-4e1d-96c9-84d8a0df1eda"},
{date: "2018-03-05", id: "5daf20a7-7106-419d-9761-3e96dfedf5ff"},
{date: "2018-03-08", id: "4bbcc474-ff88-4fc0-aede-abde0ae42b93"},
{date: "2018-03-08", id: "2a883953-df6a-45b1-9e0a-eb67cc1752b3"},
{date: "2018-03-08", id: "578b78cb-6d2c-4e91-a5a1-6d081945a51b"},
{date: "2018-03-09", id: "defb35e5-1a43-4347-ac4b-a85093551900"},
{date: "2018-02-20", id: "ccff5cae-0d38-450d-90f9-2490256db84c"},
{date: "2018-02-21", id: "8ffc7266-6a19-40a7-b181-7c7d73be8467"},
{date: "2018-02-22", id: "147afdd1-8c8b-4fde-b992-d8d8465a1771"},
{date: "2018-02-23", id: "72f10683-17a5-49d1-9e78-5fc2b380a314"},
{date: "2018-02-24", id: "2d2cd12c-2472-4e1d-96c9-84d8a0df1eda"},
{date: "2018-03-05", id: "5daf20a7-7106-419d-9761-3e96dfedf5ff"},
{date: "2018-03-08", id: "4bbcc474-ff88-4fc0-aede-abde0ae42b93"},
{date: "2018-03-08", id: "2a883953-df6a-45b1-9e0a-eb67cc1752b3"},
{date: "2018-03-08", id: "578b78cb-6d2c-4e91-a5a1-6d081945a51b"},
{date: "2018-03-09", id: "defb35e5-1a43-4347-ac4b-a85093551900"},]

What is the best way (in ES6) to remove duplicates?

Mayank Shukla
  • 100,735
  • 18
  • 158
  • 142
Adel
  • 3,542
  • 8
  • 30
  • 31

2 Answers2

1

Not exactly ES6 but one way to do it is use Lodash uniq function

_.uniq([2, 1, 2]);
// => [2, 1]

Edit: UniqBy may be more what you are after:

// The `_.property` iteratee shorthand.
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }, { 'x': 2 }]
Stretch0
  • 8,362
  • 13
  • 71
  • 133
1

You could use a map, and make a unique key out of the date & id..

Below is an example.

var data =
[{date: "2018-02-20", id: "ccff5cae-0d38-450d-90f9-2490256db84c"},
{date: "2018-02-21", id: "8ffc7266-6a19-40a7-b181-7c7d73be8467"},
{date: "2018-02-22", id: "147afdd1-8c8b-4fde-b992-d8d8465a1771"},
{date: "2018-02-23", id: "72f10683-17a5-49d1-9e78-5fc2b380a314"},
{date: "2018-02-24", id: "2d2cd12c-2472-4e1d-96c9-84d8a0df1eda"},
{date: "2018-03-05", id: "5daf20a7-7106-419d-9761-3e96dfedf5ff"},
{date: "2018-03-08", id: "4bbcc474-ff88-4fc0-aede-abde0ae42b93"},
{date: "2018-03-08", id: "2a883953-df6a-45b1-9e0a-eb67cc1752b3"},
{date: "2018-03-08", id: "578b78cb-6d2c-4e91-a5a1-6d081945a51b"},
{date: "2018-03-09", id: "defb35e5-1a43-4347-ac4b-a85093551900"},
{date: "2018-02-20", id: "ccff5cae-0d38-450d-90f9-2490256db84c"},
{date: "2018-02-21", id: "8ffc7266-6a19-40a7-b181-7c7d73be8467"},
{date: "2018-02-22", id: "147afdd1-8c8b-4fde-b992-d8d8465a1771"},
{date: "2018-02-23", id: "72f10683-17a5-49d1-9e78-5fc2b380a314"},
{date: "2018-02-24", id: "2d2cd12c-2472-4e1d-96c9-84d8a0df1eda"},
{date: "2018-03-05", id: "5daf20a7-7106-419d-9761-3e96dfedf5ff"},
{date: "2018-03-08", id: "4bbcc474-ff88-4fc0-aede-abde0ae42b93"},
{date: "2018-03-08", id: "2a883953-df6a-45b1-9e0a-eb67cc1752b3"},
{date: "2018-03-08", id: "578b78cb-6d2c-4e91-a5a1-6d081945a51b"},
{date: "2018-03-09", id: "defb35e5-1a43-4347-ac4b-a85093551900"}];

const d = Array.from(new Map(data.map((v) => {
  return [v.date + v.id, v];
})).values());

console.log(`Old length: ${data.length}`);
console.log(`New length: ${d.length}`);
console.log(d);
Keith
  • 22,005
  • 2
  • 27
  • 44