在JavaScript中计算数组的diff补丁

时间:2013-01-24 11:49:38

标签: javascript arrays diff patch

我想生成一个对象,该对象可以有效地作为数组A的补丁应用,以生成数组B.

给定一个比较两个值的函数isSame,如果它们相同则返回true,否则返回false(其目的是比较两个数组元素),是否有一个已知算法来计算两个数组之间的差异并返回特定差异列表?差异将由以下几组组成:在索引Y处移除的X元素在索引Y处插入的以下元素

我已经写了一些有用的东西,但是现在它有问题而且我无法继续前进,我担心当别人可能已经这样做时我正在重新发明轮子。 http://jsfiddle.net/G6tYt/1/

1 个答案:

答案 0 :(得分:1)

如果你希望比较既深入又容忍对象和数组,那么我后来写的这个工具可能会有用:

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": "+"}