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');