-2

如何实现一个解释两棵字符串树之间差异的函数?例如:

diff(["aaa","bbb",["ccc","ddd"],"eee"],
     ["aaa","bbx",["ccc","ddd"]]);

这个函数应该报告“bbb”的编辑和“eee”的删除。如何实现这样的功能?

4

1 回答 1

2

对于简单的文本差异,您可以将每棵树转换为平面文件。

将节点转换为行,这样每个子节点都带有选项卡(每个嵌套级别一个选项卡)。然后在两个平面文件上运行差异。例如:

["aaa","bbb",["ccc","ddd"],"eee"]

变为(转义制表符和换行符):

aaaa
bbb
    ccc
    ddd
eee

如果您想要一个数字度量,请计算 diff 输出中的行数。

如果你想变得花哨,它可以在每个节点上完成,但根据结果的用途,这需要做很多工作。

于 2013-02-23T02:02:31.817 回答