数组对比方法
根据顺序是否重要、如何报告新增和删除,以及重复值是否有意义,JSON 数组可以采用不同的方式对比。Compare JSON 提供三种数组对比方法。
按索引
将两个数组相同位置上的元素逐一对比。
[1, 2, 3]
[1, 3, 2]
使用按索引时,第二和第三个位置都会被报告为变更,因为 2 变成了 3,3 变成了 2。这种方法最严格,适用于数组有序且位置对齐的场景,例如已排序列表或固定长度的元组。
LCS(最长公共子序列)
LCS 会找出两个数组中共同出现的最长有序序列。位于该序列内的元素被视为未变更,序列外的元素则被报告为新增或删除。
[1, 2, 3, 4]
[1, 3, 4, 5]
使用 LCS 时,1、3、4 构成长度为 3 的公共子序列,因此 2 被报告为删除,5 被报告为新增。LCS 适合数组基本有序但中间可能插入或删除元素的场景,例如更新日志或有序事件列表。
无序
将数组作为集合对比,忽略元素顺序和重复值。
[1, 2, 2, 3]
[3, 1, 2]
使用无序时,这两个数组被视为相同,因为它们包含相同的唯一值。如果一侧有 4 而另一侧没有,4 会被报告为新增。这种方法适用于顺序无关的集合场景,例如标签列表、权限集合或分类。
如何选择
| 使用场景 | 推荐方法 |
|---|---|
| 有序列表、元组、序列 | 按索引 |
| 基本有序但偶有插入或删除 | LCS |
| 集合、标签、权限、分类 | 无序 |
你可以在执行对比前,通过 设置 面板切换数组对比方法。