gpt4 book ai didi

javascript - 检查 jquery 对象数组是否匹配键。 += value 如果匹配,如果不匹配则推送新对象

转载 作者:行者123 更新时间:2023-11-30 15:07:19 24 4
gpt4 key购买 nike

用户将填写一个数据表,然后我需要迭代该表,按他的 id 分组并确保每个组 == 100。

我的计划是遍历表行,生成键:值对象,检查数组中是否有匹配的键。如果键匹配,则将值添加到现有数组对象。如果不匹配,则推送新项目。

假设这个数组:

var gidArr =
[
{
gid: '123',
ratio: '20'
},
{
gid: '123',
ratio: '40'
},
{
gid: '432',
ratio: '50'
},

]

结果应该是:

{ gid:123, ratio:60 },
{ gid:432, ration: 50}

我尝试过的一些事情:

function GIDRatio(gid, ratio) {
this.gid = gid;
this.ratio = parseFloat(ratio);
}
var item = new GIDRatio(gid, ratio);

1:
if(gid in gidArr) {
gidArr.ratio += item.ratio;
} else {
gidArr.push(item);
}

2:

$.each(gidArr, function(i, v) {
if(v.gid === item.gid) {
v.ratio += item.ratio;
} else {
gisArr.push(item);
}
})

fiddle :https://jsfiddle.net/8vw4eehs/11/

最佳答案

您可以使用Array.reduce 方法将原始数组转换为新结构。

在您的 reduce 函数中,只需检查 acc 即您的 accumulated array 是否有 gid 已经可用。如果不是,则插入数组。如果是,则计算 ratio 的总和并更新 ratio

var gidArr =
[
{
gid: '123',
ratio: '20'
},
{
gid: '123',
ratio: '40'
},
{
gid: '432',
ratio: '50'
},

];

const newArr = gidArr.reduce((acc, cur) => {
if(acc.some(x => x.gid === cur.gid)) {
acc.map(x => {
if(x.gid === cur.gid) {
x.ratio = (+x.ratio) + (+cur.ratio);
}
return x;
});
} else {
acc.push(cur);
}
return acc;
},[])

console.log(newArr);

关于javascript - 检查 jquery 对象数组是否匹配键。 += value 如果匹配,如果不匹配则推送新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552268/

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