Страницы

Поиск по вопросам

суббота, 16 марта 2019 г.

Объединение объектов в массиве по ключу

У меня имеется массив с разными данными , который выглядит примерно так:
[ { "_id": "556c978be20c7cd0087c6f10", "username": "ivan", "music": [ "Metallica" ] }, { "_id": "556c978be20c7cd0087c6f10", "username": "ivan", "interests": [ "Music", "Djent" ] }, { "_id": "556c978be20c7cd0087c6f13", "username": "alina", "interests": [ "Music", "Literature" ] }, { "_id": "556c978be20c7cd0087c6f13", "username": "alina", "music": [ "Skyharbor" ] } ]
Как с объединить объекты в массиве по ключам ('_id') следующим образом (приоритет lodash):
[ { "_id": "556c978be20c7cd0087c6f10", "username": "ivan", "music": [ "Metallica" ], "interests": [ "Music", "Djent" ] }, { "_id": "556c978be20c7cd0087c6f13", "username": "alina", "music": [ "Skyharbor" ] "interests": [ "Music", "Literature" ] } ]


Ответ

Сгруппировать по идентификаторам можно с помощью groupBy, а затем объединить пары с помощью merge
var users = [{ "_id": "556c978be20c7cd0087c6f10", "username": "ivan", "music": [ "Metallica" ] }, { "_id": "556c978be20c7cd0087c6f10", "username": "ivan", "interests": [ "Music", "Djent" ] }, { "_id": "556c978be20c7cd0087c6f13", "username": "alina", "interests": [ "Music", "Literature" ] }, { "_id": "556c978be20c7cd0087c6f13", "username": "alina", "music": [ "Skyharbor" ] }]; console.log( _.map( _.groupBy( users, function (u) { return u._id } ), function (g) { return _.merge.apply(this, g) } ) );
P. S. Прошу ногами не бить, в первый раз в жизни вижу lodash.

Комментариев нет:

Отправить комментарий