5

我想生成一个对象,该对象将能够有效地作为补丁应用到数组 A 以生成数组 B。

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

我已经写了一些类似的东西,但目前它有问题,我在推进它时遇到了麻烦,而且我担心我正在重新发明轮子,而其他人可能已经这样做了。http://jsfiddle.net/G6tYt/1/

4

1 回答 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": "+"}
于 2013-02-04T14:04:35.653 回答