Как только вы исправите недействительные кавычки, вы просто используете reduce
:
const arr = [{type:"movs",id:"1001",content:"111"},{type:"books",id:"1001",content:"222"},{type:"books",id:"1001",content:"333"},{type:"books",id:"1002",content:"444"},{type:"movs",id:"1001",content:"112"},{type:"movs",id:"1005",content:"113"}];
const res = Object.values(arr.reduce((a, { type, content, id }) => (a[`${type}_${id}`] = (a[`${type}_${id}`] || { type, id, content: [] }), a[`${type}_${id}`].content.push(content), a), {}));
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
Более подробная / понятная версия:
const arr = [{type:"movs",id:"1001",content:"111"},{type:"books",id:"1001",content:"222"},{type:"books",id:"1001",content:"333"},{type:"books",id:"1002",content:"444"},{type:"movs",id:"1001",content:"112"},{type:"movs",id:"1005",content:"113"}];
const res = arr.reduce((accumulator, currentItem) => {
let { type, id, content } = currentItem;
let uniqueIdentifier = `${type}_${id}`;
// { type, id, content: [] }), a[`${type}_${id}`].content.push(content), a), {}));
if (accumulator[uniqueIdentifier]) {
accumulator[uniqueIdentifier].content.push(content);
}
else {
accumulator[uniqueIdentifier] = { type, id, content: [content] };
}
return accumulator;
}, {});
const resultArr = Object.values(res);
console.log(resultArr);
.as-console-wrapper { max-height: 100% !important; top: auto; }