首页 > 解决方案 > 在节点中按 JSon 分组以获得唯一 ID

问题描述

在我的 nodeJs 代码中,我从数据库中获取一些记录。我以 JSON 格式获取数据,如下所示:

[[{
    sourcePguid: '000526420800003',
    recordPguid: 'urn:reference:000000000000000000000000011225'
  },
  {
    sourcePguid: '000526420800003',
    recordPguid: 'urn:reference:000000000000000000000000011225'
  }]
  ]

我想要的是类似于以下 JSON 的东西:

{
    sourcePguid: '000526420800003',
    recordPguid:['urn:reference:000000000000000000000000011225','urn:reference:000000000000000000000000011225']

  }

我是 Java 脚本和节点的新手。如果有人帮助我在节点 JS 中实现输出,请多多关照。

标签: node.js

解决方案


首先,您需要平整整个阵列

const array = [[{
    sourcePguid: '000526420800003',
    recordPguid: 'urn:reference:000000000000000000000000011225'
  },
  {
    sourcePguid: '000526420800003',
    recordPguid: 'urn:reference:000000000000000000000000011225'
  }]
].flat();

接下来你需要通过一些键来减少数组分组

const grouped = array.reduce((all, current) => {
  const existing = all.find(element => element.sourcePguid === current.sourcePguid);
  if (!existing) {
    all.push({sourcePguid: current.sourcePguid, recordPguid: [current.recordPguid]});
  } else if (!existing.recordPguid.find(record => record === current.recordPguid)) {
    existing.recordPguid.push(current.recordPguid);
  }
  return all;
}, []);

推荐阅读