diffy-update
diffy-update copied to clipboard
Scripts to update object or array with a diff output
链式调用代码示例,最后追加的内容和输出结果有误,push 结果应为 ['Alice', 'Bob', 'Cary'] ```js import chain from 'update/chain'; let source = { name: { firstName: 'Navy', lastName: 'Wong' }, age: 20, children: ['Alice', 'Bob'] }; let target =...
``` update(obj, {key: {$omit: true}}); ``` 等同于 ``` underscore.omit(obj, 'key'); ``` 区别在于作为一个指令时,可以在任意深度的层级做这个操作 有2个方案: 1. 可以使用`$omit: false`表示不移除这个字段(等于啥事也不做),这种好处是生成整个指令集的时候可以依赖某些表达式方便些 2. 无论`$omit`的值是啥,都表示要移除这个字段 另一个问题:当`$omit`被用于顶层时,即`let newObject = updage(obj, {$omit: true});`时,返回值是什么,一个空对象还是`null`或者`undefined`,或者`$omit`不能用于顶层
现有库针对对象类型已经有差异计算,但是对于数组没有 期待最后会有: 1. 对数组可以有`unshift`、`push`、`splice`(未实现)三类操作 2. 相对于现在的`changeType`、`oldValue`、`newValue`,会额外有一个`arrayChange`属性,属性的类型、格式、内容均待设计 3. `merge`模块有能力合并多个`arrayChange`,如多次`splice`合并成一个,并且如果合并后正好发生在原数组末尾,则变成`push`之类的