У меня есть массив объектов, которые я хочу сгруппировать по определенным условиям.
Ниже приведен исходный массив:
let meetingOriginal = [{
id: 19,
datetime: '2019-01-02T13:28:03+05:30',
status: 'proposed',
createdBy: 'buyer',
buyerId: 2,
buyerFirstName: 'Demo',
buyerLastName: 'User',
buyerProfileUrl: null,
petId: 1,
petName: 'Penny',
petMedia: 'https://s3.us-east-2.amazonaws.com/s3-petquest-dev/images/1546324490530.jpg',
ownerFirstName: 'Faizan',
ownerLastName: 'Saiyed',
ownerProfileUrl: null,
ownerId: 3,
},
{
id: 20,
datetime: '2019-01-03T13:28:06+05:30',
status: 'proposed',
createdBy: 'buyer',
buyerId: 2,
buyerFirstName: 'Demo',
buyerLastName: 'User',
buyerProfileUrl: null,
petId: 1,
petName: 'Penny',
petMedia: 'https://s3.us-east-2.amazonaws.com/s3-petquest-dev/images/1546324490530.jpg',
ownerFirstName: 'Faizan',
ownerLastName: 'Saiyed',
ownerProfileUrl: null,
ownerId: 3,
},
{
id: 21,
datetime: '2019-01-04T13:28:09+05:30',
status: 'proposed',
createdBy: 'buyer',
buyerId: 2,
buyerFirstName: 'Demo',
buyerLastName: 'User',
buyerProfileUrl: null,
petId: 1,
petName: 'Penny',
petMedia: 'https://s3.us-east-2.amazonaws.com/s3-petquest-dev/images/1546324490530.jpg',
ownerFirstName: 'Faizan',
ownerLastName: 'Saiyed',
ownerProfileUrl: null,
ownerId: 3,
},
{
id: 22,
datetime: '2019-01-04T13:28:09+05:30',
status: 'proposed',
createdBy: 'buyer',
buyerId: 3,
buyerFirstName: 'Demo',
buyerLastName: 'User',
buyerProfileUrl: null,
petId: 2,
petName: 'Jerry',
petMedia: 'https://static1.squarespace.com/static/52784cdde4b07cdbb003018f/t/56259d40e4b043d43a71cc73/1445305665196/Cavapoo-dog-painting-square-a.jpg?format=500w',
ownerFirstName: 'Jony',
ownerLastName: 'Snowy',
ownerProfileUrl: null,
ownerId: 5,
}
];
Как я могу использовать только методы .map () или .filter () (строго без библиотек или для функций & foreach) для группировки этих объектов, как показано ниже?
let requiredMeeting = [{
buyerId: 2,
buyerFirstName: 'Demo',
buyerLastName: 'User',
buyerProfileUrl: null,
petId: 1,
petName: 'Penny',
petMedia: 'https://s3.us-east-2.amazonaws.com/s3-petquest-dev/images/1546324490530.jpg',
ownerFirstName: 'Faizan',
ownerLastName: 'Saiyed',
ownerId: 3,
ownerProfileUrl: 'https://s3.us-east-2.amazonaws.com/s3-petquest-dev/images/1546338985171.jpg',
meetings: [{
id: 19,
datetime: '2019-01-02T13:28:03+05:30',
status: 'proposed',
createdBy: 'buyer'
},
{
id: 20,
datetime: '2019-01-03T13:28:06+05:30',
status: 'accepted',
createdBy: 'buyer'
},
{
id: 21,
datetime: '2019-01-04T13:28:09+05:30',
status: 'proposed',
createdBy: 'buyer'
}
]
},
{
buyerId: 3,
buyerFirstName: 'Demo',
buyerLastName: 'User',
buyerProfileUrl: null,
petId: 2,
petName: 'Jerry',
petMedia: 'https://static1.squarespace.com/static/52784cdde4b07cdbb003018f/t/56259d40e4b043d43a71cc73/1445305665196/Cavapoo-dog-painting-square-a.jpg?format=500w',
ownerFirstName: 'Jony',
ownerLastName: 'Snowy',
ownerId: 5,
ownerProfileUrl: 'https://cdna.artstation.com/p/assets/images/images/002/898/132/large/hector-jenz-jonhsnow-square-detaill.jpg?1467032227',
meetings: [{
id: 22,
datetime: '2019-01-04T13:28:09+05:30',
status: 'proposed',
createdBy: 'buyer'
}]
}
];
Может быть несколько объектов, разные petIds и ownerIds.
Вот скрипка: ССЫЛКА