希望使用javascript或jquery对对象中具有相同属性名的值求和
嗨,我想对每个原因名称的数量求和。我有2个数组,如下所示希望使用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
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,很高兴能帮上忙