比较JQuery或Javascript中的两个JSON数组 [英] Compare two JSON arrays in JQuery or Javascript

查看:295
本文介绍了比较JQuery或Javascript中的两个JSON数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆