繁体   English   中英

如何正确过滤数组

[英]How to properly filter the array

大家好,有这样一组数据

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 resultArray: any = [{pat: '111', res: ['qwe', 'sda', 'xzc', 'cej'], tag: '1'},{pat: '222', res: ['qwe', 'asd'], tag: '1'}]

如果确实需要问题中提到的内容,我们可以稍微调整代码

 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)

您可能需要 array.reduce 而不是过滤器。 其次,问题中并不清楚tag所需的值。 您可以修改此答案以设置适当的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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM