Hola a todos hay una matriz de datos de este tipo
const arrayPat = [ {pat: '111', res: 'qwe', tag: '1'}, {pat: '111', res: 'sda', tag: '2'}, {pat: '111', res: 'xzc', tag: '3'}, {pat: '111', res: 'cej', tag: '4'}, {pat: '222', res: 'qwd', tag: '5'}, {pat: '222', res: 'asd', tag: '6'}, ]necesito conseguir algo asi
const resultArray: any = [{pat: '111', res: ['qwe', 'sda', 'xzc', 'cej'], tag: '1'},{pat: '222', res: ['qwe', 'asd'], tag: '1'}]Si se necesita exactamente lo que se menciona en la pregunta, podemos modificar ligeramente el código
const arrayPat = [{ pat: '111', res: 'qwe', tag: '1' }, { pat: '111', res: 'sda', tag: '2' }, { pat: '111', res: 'xzc', tag: '3' }, { pat: '111', res: 'cej', tag: '4' }, { pat: '222', res: 'qwd', tag: '5' }, { pat: '222', res: 'asd', tag: '6' }, ] const val = [] arrayPat.forEach((curr) => { let newPath = val.find(currentItem => currentItem.pat === curr.pat); if (!newPath) { val.push({ pat: curr.pat, res: [curr.res], tag: curr.tag }) } else { newPath.res.push(curr.res) } }); console.log(val)Es posible que necesite array.reduce en lugar de filtro. En segundo lugar, el valor requerido de la tag no está claro en la pregunta. Puede modificar esta respuesta para establecer el valor adecuado de la tag
const arrayPat = [{ pat: '111', res: 'qwe', tag: '1' }, { pat: '111', res: 'sda', tag: '2' }, { pat: '111', res: 'xzc', tag: '3' }, { pat: '111', res: 'cej', tag: '4' }, { pat: '222', res: 'qwd', tag: '5' }, { pat: '222', res: 'asd', tag: '6' }, ] const val = arrayPat.reduce((acc, curr) => { if (!acc[curr.pat]) { acc[curr.pat] = { pat: curr.pat, res: [curr.res], tag: curr.tag } } else { acc[curr.pat].res.push(curr.res) } return acc; }, {}); console.log(Object.values(val))