Например, у меня есть массив как это:Как выбрать последний элемент для каждого пользователя из массива?
[
{
"data": "some data",
"user": "A",
"createdAt":"2016-12-24",
},
{
"data": "some data2",
"user": "B",
"createdAt":"2016-12-24",
},
{
"data": "some data3",
"user": "A",
"createdAt":"2016-12-25",
},
{
"data": "some data4",
"user": "A",
"createdAt":"2016-12-23",
},
{
"data": "some data5",
"user": "B",
"createdAt":"2016-12-25",
},
{
"data": "some data6",
"user": "C",
"createdAt":"2016-12-24",
},
]
Мне нужно только последний созданный элемент за одного пользователя, так что мне нужен массив так:
[
{
"data": "some data3",
"user": "A",
"createdAt":"2016-12-25",
},
{
"data": "some data5",
"user": "B",
"createdAt":"2016-12-25",
},
{
"data": "some data6",
"user": "C",
"createdAt":"2016-12-24",
},
]
Как я могу это сделать с подчеркиванием или lodash?
Хорошее решение для чистого JavaScript. Приоритет для тех, кто приезжает сюда в будущем и ищет способ сделать это без дополнительных библиотек. Метод 'sort()' в [прототипе расширения] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) на javascript (встроен в большинство браузеров сейчас), может ускорить метод сортировки по ключу, делая это, возможно, быстрее. –
Спасибо, @SamuelJackson. С другой стороны, мы могли бы избавиться от объекта Date, если мы уверены, что свойство «createdAt» всегда имеет формат «YYYY-MM-DD». Кроме того, если мы сможем использовать ES2015, код будет выглядеть как –
' Функция getLatestItemsES6 (itemArray) { let lastItems = []; for (var item itemArray.sort ((a, b) => a.createdAt obj.user === item.user)) { lastItems.push (item); } } return latestItems; } ' –