0.2.3 • Published 5 years ago
record-diff v0.2.3
record-diff
一个对比两个记录集的差异的工具包,根据指定 keyName 来对比两条记录,并可分析出差异路径。
- 可设置忽略某个键值
- 支持是否全等对比
- 输出差异节点路径
- 细分变更类型,按新增,修改,删除
Installation
npm i record-diff
Usage
const recordDiff = require('record-diff');
const a1 = [{id: 1 x: 'sth here', y: 'yy'}, {id: 2, xx: 1}];
const b1 = [{id: 1, x: 'sth changed', z: 'zz'}, {id: 3, xxx: 2}];
console.log(recordDiff(a1, b1, 'id'));
output:
{
"changed": [ // 被变更的记录
{
"id": 1,
"x": "sth changed",
"z": "zz"
}
],
"changedDetails": [ // 被变更记录的详细路径节点
{
"1": {
"$unset": {
"y": true
},
"$set": {
"x": "sth changed",
"z": "zz"
}
}
}
],
"added": [ // 新增的记录
{
"id": 3,
"xxx": 2
}
],
"removed": [ // 移除的记录
{
"id": 2,
"xx": 1
}
]
}
API
recordDiff(beforeRecord, afterRecord, keyName, options);
beforeRecord = [] Array
被对比的数据集
afterRecord = [] Array
新的数据集
key = 'id' String|Number
每条记录中的主键,用于对于
options
- strictEqual = true
boolean
是否使用严格匹配模式来对比每个值,即使用===
- ignoreKey
string
忽略对比某个 key
stringifyEqual = false
boolean
是否把值都转为 String 值来对比inc = false
boolean
是否对比差值,如果为 true,则尝试转换值为数值类型,并计算差值,会在 changedDetails $inc 字段中体现。