Nat*_*ley 5 javascript arrays diff patch
我想生成一个对象,该对象将能够有效地作为补丁应用于数组 A 以生成数组 B。
给定一个函数isSame,它比较两个值并在它们相同时返回真,否则返回假(其目的是比较两个数组元素),是否有已知的算法来计算两个数组之间的差异并返回一个列表具体区别?差异将由以下集合组成:在索引 Y 处删除的 X 元素和在索引 Y 处插入的以下元素。
我写过一些这样的作品,但目前它有问题,我无法继续前进,而且我担心当其他人可能已经这样做时我正在重新发明轮子。http://jsfiddle.net/G6tYt/1/
小智 2
如果您希望比较既深入又能够容忍对象和数组,那么我不久前编写的这个工具可能有用:
https://github.com/danski/spahql/blob/master/src/SpahQL.DataHelper.js#L18
SpahQL.DataHelper.compare(
{"a": "aval", "b": "bval", "c": "cval", "arr": [0,1,2]},
{"a": "modified", "c": "cval", "d": "added", "arr": [0,1,2,3]}
);
// -> {"/": "~", "/a": "~", "/b": "-", "/d": "+", "/arr": "~", "/arr/3": "+"}
Run Code Online (Sandbox Code Playgroud)