比较JQuery或Javascript中的两个JSON数组 [英] Compare two JSON arrays in JQuery or Javascript
问题描述
使用jQuery-我想比较2个JSON数组:
Using jQuery - I would like to compare 2 JSON arrays:
origArray 来自数据库/C#API:
origArray comes from the database/C# API:
var origArray = [ {
"TypeName": "Single",
"TypeID": "3121",
"TypeCount": "2"
},
{
"TypeName": "Double",
"TypeID": "4056",
"TypeCount": "2"
},
{
"TypeName": "Family",
"TypeID": "5654",
"TypeCount": "4"
}
];
userArray 是从用户输入中收集的:
userArray is gathered from user input:
var userArray = [ {
"TypeID": "3121",
"TypeCount": "2"
},
{
"TypeID": "4056",
"TypeCount": "3"
},
{
"TypeID": "3121",
"TypeCount": "3"
}
];
我想做的是循环遍历 userArray ,并按 TypeID 进行分组",然后对 TypeCount 求和.
What I would like to do, is loop through the userArray, and "group" by the TypeID, and Sum the TypeCount.
因此在上面的示例中:
TypeID: 3121
TypeCount: 5 (ie. 2 + 3)
TypeID: 4056
TypeCount: 3
意思是TypeID 3121与4056之间相差3以上.
Meaning there would be a difference of 3 over for TypeID 3121 and 1 over for 4056.
是否可以通过jQuery或本机Javascript获取这些信息(可以跨浏览器使用)?
Is there any way of getting that information out of either jQuery or native Javascript (that would work cross-browser)?
感谢您的帮助,
标记
推荐答案
定义一个函数,以每个数组按TypeID
并求和TypeCount
的总和:
Define a function to group by each array by TypeID
and sum TypeCount
:
function groupByTypeID (arr) {
var groupBy = {};
$.each(arr, function () {
var currentCount = groupBy[this.TypeID] || 0;
groupBy[this.TypeID] = currentCount + parseInt(this.TypeCount);
});
return groupBy;
}
然后,对两个数组进行分组,并采用它们的区别:
Then, group both arrays, and take their differences:
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.
这篇关于比较JQuery或Javascript中的两个JSON数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!