JavaScript
NPM包 @golden-tiger/difference 介绍:
对比出两个JavaScript对象的差异,并能够通过属性值路径覆盖生成自定义的对比结果,以此可以实现对部分属性值的差异忽略,或者组合多个属性值生成一个差异项。
安装:
npm i @golden-tiger/difference使用:
difference(before, after, option)difference function will find out what is different between two javascript object. (P.s. number, string and boolean are also javascript object)
Use difference function to get differences between the first parameter before and the second after. And difference function's third parameter control difference's process.
difference(1, 1);
// []
difference(1, 2);
// [ { routes: [], before: 1, after: 2 } ]difference('foo', 'foo');
// []
difference('foo', 'bar');
// [ { routes: [], before: 'foo', after: 'bar' } ]difference(true, true);
// []
difference(false, false);
// []
difference(true, false);
// [ { routes: [], before: true, after: false } ]option.arrayInOrder(boolean) decides whether an array is in order. Sort function is (a, b) => a < b ? -1 : 1 by default, which can be set with option.arraySort(Function). difference function will take array's sorted result as input.
difference([1, 'foo'], [1, 'foo']);
// []
difference([1, 'foo'], [2, 'bar']);
// [
// { routes: [ '1' ], before: 'foo', after: 'bar' },
// { routes: [ '0' ], before: 1, after: 2 }
// ]difference([1, 2], [2, 1]);
// []
difference([1, 2], [2, 1], {
arrayInOrder: true,
});
// [
// { routes: [ '1' ], before: 2, after: 1 },
// { routes: [ '0' ], before: 1, after: 2 }
// ]difference(['foo', 'bar'], ['bar', 'foo']);
// []
difference(['foo', 'bar'], ['bar', 'foo'], {
arrayInOrder: true,
});
// [
// { routes: [ '1' ], before: 'bar', after: 'foo' },
// { routes: [ '0' ], before: 'foo', after: 'bar' }
// ]difference({ a: 'foo' }, { a: 'foo' });
// []
difference({ a: 'foo' }, { a: 'bar' });
// [ { routes: [ 'a' ], before: 'foo', after: 'bar' } ]
difference({ a: 'foo' }, { b: 'foo' });
// [
// { routes: [ 'b' ], before: undefined, after: 'foo' },
// { routes: [ 'a' ], before: 'foo', after: undefined }
// ]handler function's falsy return will be ignore in difference result. Using handler function you can custom the difference result, such as ignoring some specific route value or combining several route values to one difference item.
difference({ a: 'foo' }, { a: 'bar' }, {
covers: [
{
routes: ['a'],
handler: (before, after, routes) => {
console.log(before);
// foo
console.log(after);
// bar
console.log(routes);
// [ 'a' ]
return false;
},
}
],
});
// []
difference({ a: 'foo' }, { a: 'bar' }, {
covers: [
{
routes: ['a'],
handler: (before, after, routes) => {
return [
{ routes, before, after },
];
},
}
],
});
// [ { routes: [ 'a' ], before: 'foo', after: 'bar' } ] | 留言与评论(共有 0 条评论) “” |