Страницы

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

четверг, 23 января 2020 г.

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

#javascript #объекты #объединение #lodash


У меня имеется массив с разными данными , который выглядит примерно так:

[ {
   "_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"
   ]
  }
]

    


Ответы

Ответ 1



Сгруппировать по идентификаторам можно с помощью 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.

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

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