Javascript 在数组中组合相似的对象

Javascript 在数组中组合相似的对象,javascript,arrays,node.js,object,Javascript,Arrays,Node.js,Object,我正在根据一系列订单生成税务报告。基本上,我需要转换以下数组: [ { "rate": 6.75, "code": "US-NC-Guilford-27409", "grand": 39.981625, "tax": 2.02 }, { "rate": 7.5, "code": "US-NC-Orange-27516", "grand": 186.25, "tax": 11.25 }, { "ra

我正在根据一系列订单生成税务报告。基本上,我需要转换以下数组:

    [
  {
    "rate": 6.75,
    "code": "US-NC-Guilford-27409",
    "grand": 39.981625,
    "tax": 2.02
  },
  {
    "rate": 7.5,
    "code": "US-NC-Orange-27516",
    "grand": 186.25,
    "tax": 11.25
  },
  {
    "rate": 7.5,
    "code": "US-NC-Orange-27516",
    "grand": 29.19625,
    "tax": 1.5
  }
]
进入每个类“code”的单独数组中,其中类“code”可以等于任何值,并且可以具有任何数量的该类型。所以它看起来像这样:

[  
   US-NC-Guilford-27409:[  
      {  
         "rate":6.75,
         "code":"US-NC-Guilford-27409",
         "grand":39.981625,
         "tax":2.02
      }
   ],
   US-NC-Orange-27516:[  
      {  
         "rate":7.5,
         "code":"US-NC-Orange-27516",
         "grand":186.25,
         "tax":11.25
      },
      {  
         "rate":7.5,
         "code":"US-NC-Orange-27516",
         "grand":29.19625,
         "tax":1.5
      }
   ]
]
但是我对格式化分离数据的其他方式完全开放,但是当生成报告时,我们必须给出每个税务类别的订单日志


那么,您将如何使用JavaScript(节点)创建该输出呢?

这似乎是lodash
\uuu.groupBy()
()


不需要图书馆,工作是:

var数据=[
{
“利率”:6.75,
“代码”:“US-NC-Guilford-27409”,
“大”:39.981625,
“税”:2.02
},
{
“利率”:7.5,
“代码”:“US-NC-Orange-27516”,
“大”:186.25,
“税”:11.25
},
{
“利率”:7.5,
“代码”:“US-NC-Orange-27516”,
“大”:29.19625,
“税”:1.5
}
]
var代码=数据减少(功能(acc、obj){
如果(!acc.hasOwnProperty(对象代码))acc[obj.code]=[];
acc[obj.代码].推送(obj);
返回acc;
}, {});

document.write(JSON.stringify(code))这不是您希望实现的有效结构。也许你的意思是结果是一个对象,而不是一个数组?你尝试了什么?有什么问题吗?完美正是我想要的
除非还包含框架或库的标记,否则对于带有[tag:JavaScript]标记的问题,需要一个纯JavaScript的答案。
即使特别提到了节点?没有人编写纯nodej。我不知道
节点
标记与它有什么关系。当然,人们是用纯Javascript编写的,你认为这样的库和框架是如何存在的呢?我不理解这些反对意见。我认为这个答案非常有用。如果有人想在不使用任何库的情况下继续编写此代码,我没意见,但是,为什么要重新发明轮子呢?除非最初的海报明确要求使用纯javascript并排除任何库,否则我相信这个答案解决了问题,并提供了一个非常有用的库,可以用于类似的问题,因为它是
节点
,并且可能与ES5兼容,使用
对象。创建(null)
可能比
{}更安全
以避免任何可能的碰撞+1@Xotic750-不知道是否更安全,但这样就不需要拥有自己的财产。“更安全”可能不是最好的形容词,但你明白了我的意思;)
var processed = _.groupBy(original, 'code');