通过键聚合对象数组

时间:2018-12-03 11:56:45

标签: javascript aggregate

我希望以更加用户友好和聚合的方式输出以下上下文数组。我基本上想显示按每个属性分组的每种组合。例如,对于以下上下文数组

const contexts = [
  { channel: 'email', preset: 'christmas', field: 'preamble bottom' },
  { channel: 'web', preset: 'christmas', field: 'preamble bottom' },
  { channel: 'email', preset: 'deal', field: 'preamble top' },
  { channel: 'email', preset: 'sale', field: 'preamble top' },
  { channel: 'web', preset: 'deal', field: 'preamble top' },
  { channel: 'web', preset: 'sale', field: 'preamble top' }
];

我想要以下答复

{
  'email, web':
    {
      'christmas': 'preamble bottom',
      'deal, sale': 'preamble top'
    }
}

我可以通过对频道和预设进行分组来做到这一点,但我一直在努力寻求通用解决方案。例如,上下文数组也可能看起来像这样

const contexts = [
  { channel: 'email', preset: 'deal', field: 'vignette' },
  { channel: 'email', preset: 'deal', field: 'headline' },
  { channel: 'web', preset: 'deal', field: 'vignette' },
  { channel: 'web', preset: 'deal', field: 'headline' }
];

并应产生以下响应

{
  'email, web':
    {
      'deal': 'vignette, headline'
    }
}

有什么想法吗?感觉应该对此有一些优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以从"debugOptions": ["DebugStdLib"] 开始分组,然后逐步到达field。希望这会有所帮助。

channel