gpt4 book ai didi

javascript - 如何在 jQuery 中对具有一个共同特定属性的两个对象的值求和?

转载 作者:行者123 更新时间:2023-11-30 13:51:45 25 4
gpt4 key购买 nike

我有一个像这样的对象数组:

0: {Id: "D", Inmueble: "00000021", Valexcep: 2}
1: {Id: "D", Inmueble: "00000021", Valexcep: 2}
2: {Id: "D", Inmueble: "00000023", Valexcep: 1}
3: {Id: "D", Inmueble: "00000023", Valexcep: 2}
4: {Id: "D", Inmueble: "00000024", Valexcep: 3}
5: {Id: "D", Inmueble: "00000168", Valexcep: 3}

我需要对那些具有相同“Inmueble”值的对象的“Valexcep”值求和,例如数组的前两个

我需要能够得到这个输出

0: {Id: "D", Inmueble: "00000021", Valexcep: 4}
2: {Id: "D", Inmueble: "00000023", Valexcep: 3}
4: {Id: "D", Inmueble: "00000024", Valexcep: 3}
5: {Id: "D", Inmueble: "00000168", Valexcep: 3}

这是我目前的代码

    var discount = 0;
var inmueble = "";


$.each(array, function(i, val) {
if (val.Id == 'D') {
discount += val.Valexcep;
inmueble = val.Inmueble;
var newObj = {
id: val.Id,
Inmueble: val.Inmueble
Valexcep: val.Valexcep;
}
array.push(newObj)
}

});

但没有按预期工作,

知道如何解决这个问题吗?

最佳答案

您可以通过将数组作为结果集来减少数组,并查看是否存在具有相同 Inmueble 的对象,然后更新 Valexcep,否则将新对象推送到结果集。

var data = [{ Id: "D", Inmueble: "00000021", Valexcep: 2 }, { Id: "D", Inmueble: "00000021", Valexcep: 2 }, { Id: "D", Inmueble: "00000023", Valexcep: 1 }, { Id: "D", Inmueble: "00000023", Valexcep: 2 }, { Id: "D", Inmueble: "00000024", Valexcep: 3 }, { Id: "D", Inmueble: "00000168", Valexcep: 3 }],
result = data.reduce((r, { Id, Inmueble, Valexcep }) => {
var temp = r.find(o => o.Inmueble === Inmueble);
if (temp) {
temp.Valexcep += Valexcep;
} else {
r.push({ Id, Inmueble, Valexcep });
}
return r;
}, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Map 分组.

var data = [{ Id: "D", Inmueble: "00000021", Valexcep: 2 }, { Id: "D", Inmueble: "00000021", Valexcep: 2 }, { Id: "D", Inmueble: "00000023", Valexcep: 1 }, { Id: "D", Inmueble: "00000023", Valexcep: 2 }, { Id: "D", Inmueble: "00000024", Valexcep: 3 }, { Id: "D", Inmueble: "00000168", Valexcep: 3 }],
result = Array.from(data
.reduce((m, { Id, Inmueble, Valexcep }) => m.set(
Inmueble,
{ Id, Inmueble, Valexcep: (m.has(Inmueble) ? m.get(Inmueble).Valexcep : 0) + Valexcep }
), new Map)
.values()
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在 jQuery 中对具有一个共同特定属性的两个对象的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com