作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的对象数组:
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/
所以,我有一个类似于 this one 的用例,但我觉得有一些额外的细节值得提出一个新问题。 ( related questions ,供引用) 我正在编写一个实现 a cycle 的数据结构.基本设
我正在使用 Django 编写一个社交网络应用程序,需要实现类似于 Facebook“Mutual Friends”概念的功能。我有一个像这样的简单模型: class Friend(models.Mo
我有一个 iOS 应用程序,用户可以在其中使用 Facebook 登录并授予 user_friends 权限。从 Graph API 2.0 开始,Facebook 声称你无法获取两个人之间所有的共同
我想知道将来对我来说最简单的方法是什么,可以使查询既有效又不那么复杂。 我应该像这样保存双向关系吗 from_id=1, to_id=2from_id=2, to_id=1 或者只创建一个唯一的行 f
我是一名优秀的程序员,十分优秀!