计算对象数组的差异,包括对象的更改?

时间:2016-02-03 21:09:27

标签: javascript

我希望能够计算两个数组之间的差异,例如下面的数据。

在一个阵列中添加或删除元素时发生的问题。如何判断一个元素是否添加到第二个数组的第1个人,是" new"而不是编辑当前的第1个元素。

我可以找到各种基于数组长度比较数组的内容,但没有关于内容的内容。

我找到的最接近的是DeepDiff库,但我无法处理其返回值以确定更改数组时的差异数。

真正的问题是数组的元素没有ID或唯一属性。 :/

[
  {
    "aclMatchType": "IP",
    "aclName": "Test2",
    "action": {
      "deny": 0,
      "dscp": "",
      "tc": ""
    },
    "inbound": true,
    "ipv4": {
      "dstIpAddr": "",
      "dstIpAddrMask": "",
      "ipProtocol": "",
      "srcIpAddr": "192.168.1.6",
      "srcIpAddrMask": "255.255.255.0"
    },
    "mac": {
      "dstMacAddr": "",
      "dstMacAddrMask": "",
      "srcMacAddr": "",
      "srcMacAddrMask": ""
    }
  },
  {
    "aclMatchType": "IP",
    "aclName": "Test4",
    "action": {
      "deny": 0,
      "dscp": "",
      "tc": ""
    },
    "inbound": true,
    "ipv4": {
      "dstIpAddr": "",
      "dstIpAddrMask": "",
      "ipProtocol": "",
      "srcIpAddr": "192.168.1.10",
      "srcIpAddrMask": "255.255.255.0"
    },
    "mac": {
      "dstMacAddr": "",
      "dstMacAddrMask": "",
      "srcMacAddr": "",
      "srcMacAddrMask": ""
    }
  }
]

1 个答案:

答案 0 :(得分:0)

根据dandavis的建议,我能够使用odiff来涵盖大多数案例。就像他说的,90%差异。足够我的目的。