簡體   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