gpt4 book ai didi

javascript - 在 JQuery 或 Javascript 中比较两个 JSON 数组

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

使用 jQuery - 我想比较 2 个 JSON 数组:

origArray 来自数据库/C# API:

var origArray = [   {
"TypeName": "Single",
"TypeID": "3121",
"TypeCount": "2"
},
{
"TypeName": "Double",
"TypeID": "4056",
"TypeCount": "2"
},
{
"TypeName": "Family",
"TypeID": "5654",
"TypeCount": "4"
}
];

userArray 从用户输入中收集:

var userArray = [   {
"TypeID": "3121",
"TypeCount": "2"
},
{
"TypeID": "4056",
"TypeCount": "3"
},
{
"TypeID": "3121",
"TypeCount": "3"
}
];

我想做的是遍历 userArray,按 TypeID“分组”,然后对 TypeCount 求和。

所以在上面的例子中:

TypeID: 3121
TypeCount: 5 (ie. 2 + 3)

TypeID: 4056
TypeCount: 3

意味着 TypeID 3121 和 4056 相差 3 以上。

有没有办法从 jQuery 或 native Javascript(跨浏览器工作)中获取该信息?

感谢您的帮助,

标记

最佳答案

定义一个函数,通过 TypeID 对每个数组进行分组并求和 TypeCount:

function groupByTypeID (arr) {
var groupBy = {};
$.each(arr, function () {
var currentCount = groupBy[this.TypeID] || 0;
groupBy[this.TypeID] = currentCount + parseInt(this.TypeCount);
});
return groupBy;
}

然后,将两个数组分组,并取其差值:

var userArrayGroups = groupByTypeID(userArray);
var origArrayGroups = groupByTypeID(origArray);

var diff = {};
for (var prop in userArrayGroups) {
diff[prop] = userArrayGroups[prop] - origArrayGroups[prop];
}

diff 将包含以下内容:

{
3121: 3
4056: 1
}

DEMO .

关于javascript - 在 JQuery 或 Javascript 中比较两个 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160998/

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