Question: I have an Array of Objects Like:

```
[ 
 { id: 8, username: 'peter' ,weight:80,date:'2019-10-14'},
 { id: 1, username: 'harry' ,weight:80,date:'2019-01-01'},
 { id: 2, username: 'harry' ,weight:84,date:'2019-02-21'},
 { id: 3, username: 'john' ,weight:80,date:'2019-03-11'},
 { id: 7, username: 'john' ,weight:80,date:'2019-05-25'},
 { id: 4, username: 'peter' ,weight:80,date:'2019-08-06'},
 { id: 5, username: 'peter' ,weight:80,date:'2019-06-11'},
 { id: 6, username: 'harry' ,weight:90,date:'2019-04-03'}

]

```

and I want last record of every unique user datewise for ex:

```
 [ 
 { id: 6, username: 'harry' ,weight:90,date:'2019-04-03'},
 { id: 7, username: 'john' ,weight:80,date:'2019-05-25'},
 { id: 8, username: 'peter' ,weight:80,date:'2019-10-14'},
]

```

in javascript.

Answer: 
You could take a [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and get the values.

```js
var array = [{ id: 1, username: 'harry', weight: 80, date: '2019-01-01' }, { id: 2, username: 'harry', weight: 84, date: '2019-02-21' }, { id: 3, username: 'john', weight: 80, date: '2019-03-11' }, { id: 4, username: 'peter', weight: 80, date: '2019-08-06' }, { id: 5, username: 'peter', weight: 80, date: '2019-06-11' }, { id: 6, username: 'harry', weight: 90, date: '2019-04-03' }, { id: 7, username: 'john', weight: 80, date: '2019-05-25' }, { id: 8, username: 'peter', weight: 80, date: '2019-10-14' }],
    result = Array.from(new Map(array.map(o => [o.username, o])).values());

console.log(result);
```

```css
.as-console-wrapper { max-height: 100% !important; top: 0; }
```
Maps and Sets inherently only hold unique values. You can use this as following:

```js
var myMap = [ 
 { id: 1, username: 'harry' ,weight:80,date:'2019-01-01'},
 { id: 2, username: 'harry' ,weight:84,date:'2019-02-21'},
 { id: 3, username: 'john' ,weight:80,date:'2019-03-11'},
 { id: 4, username: 'peter' ,weight:80,date:'2019-08-06'},
 { id: 5, username: 'peter' ,weight:80,date:'2019-06-11'},
 { id: 6, username: 'harry' ,weight:90,date:'2019-04-03'},
 { id: 7, username: 'john' ,weight:80,date:'2019-05-25'},
 { id: 8, username: 'peter' ,weight:80,date:'2019-10-14'},
]

var result = {};
for(i = 0; i < myMap.length; i++){
 result[myMap[i]['username']] = myMap[i];
}

console.log(Object.values(result));
```