Nodejs如何合并特定行,如果它是冗余的?

myzjeezk  于 2022-11-29  发布在  Node.js
关注(0)|答案(1)|浏览(80)

如何过滤掉数组中的非唯一值并使用javascript将其组合?
这是示例数组

[
   {
      "id": 1,
      "CreatedDate": "2022-07-15 16:08",
      "description": "dddd ",
      "section": "Apple"

  },
  {
      "id": 2,
      "CreatedDate": "2022-07-15 16:08",
      "description": "ddd",
      "section": "Apple"
  },
  {
      "id": 3,
      "CreatedDate": "2022-07-15 16:08",
      "name": "aaa",
      "section": "orange"
  }
]

我想要结果是

[
   {
      "id": 1,
      "CreatedDate": "2022-07-15 16:08",
      "description": "dddd, ddd",
      "section": "Apple"

  },

  {
      "id": 2,
      "CreatedDate": "2022-07-15 16:08",
      "name": "aaa",
      "section": "orange"
  }
]

如何使用javascript过滤数组中的非唯一值并将其合并?如何使用javascript过滤数组中的非唯一值并将其合并?如何使用javascript过滤数组中的非唯一值并将其合并?

hxzsmxv2

hxzsmxv21#

我们可以通过Array.reduce()实现

let data = [
   {
      "id": 1,
      "CreatedDate": "2022-07-15 16:08",
      "description": "dddd ",
      "section": "Apple"

  },
  {
      "id": 2,
      "CreatedDate": "2022-07-15 16:08",
      "description": "ddd",
      "section": "Apple"
  },
  {
      "id": 3,
      "CreatedDate": "2022-07-15 16:08",
      "name": "aaa",
      "section": "orange"
  }
]

let result = data.reduce((a,c) =>{
  let obj = a.find(i => i.section === c.section)
  if(obj){
    obj.description += " / " + c.description
  }else{
    c.id = a.length + 1 // reset the id
    a.push(c) 
  }
  return a
},[])
console.log(result)

相关问题