希望使用javascript或jquery对对象中具有相同属性名的值求和

希望使用javascript或jquery对对象中具有相同属性名的值求和,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,嗨,我想对每个原因名称的数量求和。我有2个数组,如下所示 var allreasonsids=[]; allreasonsids = [ {reasonid: 1, reasonname: abc}, {reasonid: 2, reasonname: def}, {reasonid: 3, reasonname: ghi}, {reasonid: 4, reasonname: jkl} ]; var reasonsandcount=[]; reasonsan

嗨,我想对每个原因名称的数量求和。我有2个数组,如下所示

var allreasonsids=[];
 allreasonsids = [
   {reasonid: 1, reasonname: abc}, 
   {reasonid: 2, reasonname: def}, 
   {reasonid: 3, reasonname: ghi}, 
   {reasonid: 4, reasonname: jkl}
];


var reasonsandcount=[];
reasonsandcount=[
{reasonid: 1, quantity: 5},
{reasonid: 2, quantity: 10},
{reasonid: 1, quantity: 3},
{reasonid: 3, quantity: 4},
{reasonid: 1, quantity: 2},
{reasonid: 2, quantity: 6}
];
我希望结果如下所示:

输出: abc:10

def:16

ghi:4

jkl:0

请给我任何答案。 谢谢。

您可以使用
reduce()
filter()
作为结果返回对象

var allreasonsids=[
{reasonid:1,reasonname:'abc'},
{reasonid:2,reasonname:'def'},
{reasonid:3,reasonname:'ghi'},
{reasonid:4,reasonname:'jkl'}
];
var推理和计数=[
{reasonid:1,数量:5},
{reasonid:2,数量:10},
{reasonid:1,数量:3},
{reasonid:3,数量:4},
{reasonid:1,数量:2},
{reasonid:2,数量:6}
];
var result=allreasonsids.reduce(函数(r,e){
var quant=reasonsandcount.filter(函数(a){
返回e.reasonid==a.reasonid
}).减少(功能(re、el){
返回re+el.数量
}, 0)
r[e.reasonname]=quant;
返回r
}, {})

console.log(result)
使用
Array.prototype.reduce
Object.keys
Array.prototype.forEach
功能的解决方案:

var allreansids=[{reasonid:1,reasonname:'abc'},{reasonid:2,reasonname:'def'},{reasonid:3,reasonname:'ghi'},{reasonid:4,reasonname:'jkl'}],
reasonsandcount=[{reasonid:1,数量:5},{reasonid:2,数量:10},{reasonid:1,数量:3},{reasonid:3,数量:4},{reasonid:1,数量:2},{reasonid:2,数量:6}];
//获取分组的'reasonid'项的总和
var SUMMES=reasonsandcount.reduce(函数(a,b){
(a[b.reasonid])?a[b.reasonid]+=b.数量:a[b.reasonid]=b.数量;
返回a;
}, {});
var result={},keys=Object.keys(总和);
allreasonsids.forEach(函数(o){
此[o.reasonname]=(keys.indexOf(o.reasonid+“”)!==-1)和[o.reasonid]:0;
},结果);

控制台日志(结果)使用基本javascipt或@lordkain Hi我使用的是基本javascript。你能告诉我这个问题的解决方法吗?thanx非常感谢你对我的帮助。但实际上我有一个带有空格的理性名称,例如New Stock。所以我无法使用result.New Stock访问result对象中的值。你能帮我解决吗?如果这方面有任何混淆,请问我,如果结果是在任何列表或数组中,那么这对我也有好处。如果可能的话,你能给我这个结果吗?我得到了我想要的thanx,谢谢你的帮助。但实际上我有一个带有空格的理性名称,例如New Stock而不是abc。所以我无法使用result.New Stock访问result对象中的值。你能帮我吗me.嗨,RomanPerekhrest,sums变量对我很有帮助。通过一些额外的努力,我能够得到我想要的。Thanx又来了。@chhaya_patel,很高兴能帮上忙