Вы можете уменьшить массив, взяв массив в качестве результирующего набора, и посмотреть, существует ли объект с таким же 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; }