Вы также можете использовать эту функцию для создания uniqMap со значениями списка:
function getBucketMap<T>(array: T[], uniqueProperty: string = 'id'): Map<any, T[]> {
return array
.filter(value => value)
.reduce((bucketMap: Map<any, T[]>, item: T) => {
const list = [item];
if (bucketMap.has(item[uniqueProperty])) {
list.push(...bucketMap.get(item[uniqueProperty]));
}
bucketMap.set(item[uniqueProperty], list);
return bucketMap;
}, new Map<any, T[]>());
}
, чтобы вы могли передать массив машин и передать и свойство uniq, например:
const cars = [
{
type: 'Truck',
info: {
'black': true
}
},
{
type: 'Truck',
info: {
'black': true
}
},
{
type: 'Compact Sedan',
info: {
'blue': false
}
},
];
const carsMap = getBucketMap(cars, 'type');