数组对比方法

根据顺序是否重要、如何报告新增和删除,以及重复值是否有意义,JSON 数组可以采用不同的方式对比。Compare JSON 提供三种数组对比方法。

按索引

将两个数组相同位置上的元素逐一对比。

[1, 2, 3]
[1, 3, 2]

使用按索引时,第二和第三个位置都会被报告为变更,因为 2 变成了 33 变成了 2。这种方法最严格,适用于数组有序且位置对齐的场景,例如已排序列表或固定长度的元组。

LCS(最长公共子序列)

LCS 会找出两个数组中共同出现的最长有序序列。位于该序列内的元素被视为未变更,序列外的元素则被报告为新增或删除。

[1, 2, 3, 4]
[1, 3, 4, 5]

使用 LCS 时,134 构成长度为 3 的公共子序列,因此 2 被报告为删除,5 被报告为新增。LCS 适合数组基本有序但中间可能插入或删除元素的场景,例如更新日志或有序事件列表。

无序

将数组作为集合对比,忽略元素顺序和重复值。

[1, 2, 2, 3]
[3, 1, 2]

使用无序时,这两个数组被视为相同,因为它们包含相同的唯一值。如果一侧有 4 而另一侧没有,4 会被报告为新增。这种方法适用于顺序无关的集合场景,例如标签列表、权限集合或分类。

如何选择

使用场景推荐方法
有序列表、元组、序列按索引
基本有序但偶有插入或删除LCS
集合、标签、权限、分类无序

你可以在执行对比前,通过 设置 面板切换数组对比方法。