Я хочу создать функцию group-By для объекта, где я группирую массив по полю, а затем я как бы "принудительно" приводю все поля предстоящих документов из массива по соответствующим им полям группового объекта.
const groupInDoc = (array, fieldname) => {
let groupedResultDoc = array.reduce((carDocs, current) => {
let keyCount = Object.keys(current).length;
let obj = {};
for (let [key, value] of Object.entries(current)) {
console.log(`${key}: ${value}`);
//check if key is same as the fieldname to group-by.
if (key == fieldname) {
} else {
obj[key] = value;
}
}
if (carDocs.hasOwnProperty(current[fieldname])) {
//if (Array.isArray(carDocs[current[fieldname]])){
carDocs[current[fieldname]] = obj;
//}
} else {
carDocs[current[fieldname]] = obj;
}
return carDocs;
}, Object.create({}));
return groupedResultDoc;
}
Теперь у меня есть проблема, как я могу расширить поля сгруппированных объектов с помощью их других соответствующих полей объекта из объектов массива?
Например, если у моего сгруппированного объекта есть поддокумент длягрупповой ключ с массивом полей и полем «строка», затем я хочу перенести все новые значения массива из соответствующих групповых объектов в старый массив, а также я хочу привести строки вместе с «+» ... как можноЯ делаю это?
РЕДАКТИРОВАТЬ : Мои исходные данные:
let doc = [
{
"car": "Ford",
"prices": ["12", "3", "5", "1"],
"model": "SUV"
},
{
"car": "Ford",
"prices": ["99","88","77"],
"model": "T3"
},
{
"car": "Toyota",
"prices": ["33","44","55"],
"model": "Subaru"
},
{
"car": "Toyota",
"prices": ["66", "50", "22"],
"model": "Cheyenne"
},
{
"car": "Peugeot",
"prices": ["1","2","3"],
"model" : "503"
}
];
Мой результат:
CarDocs: { Ford: { prices: [ '99', '88', '77' ], model: 'T3' },
Toyota: { prices: [ '66', '50', '22' ], model: 'Cheyenne' },
Peugeot: { prices: [ '1', '2', '3' ], model: '503' } }
, но должно быть:
CarDocs: { Ford: { prices: ["12", "3", "5", "1", '99', '88', '77' ], model: 'T3', 'SUV' },
Toyota: { prices: [33","44","55", '66', '50', '22' ], model: 'Cheyenne', 'Subaru' },
Peugeot: { prices: [ '1', '2', '3' ], model: '503' } }