文字列の 2 つのツリーの違いを解釈する関数を実装する方法は? 例えば:
diff(["aaa","bbb",["ccc","ddd"],"eee"],
["aaa","bbx",["ccc","ddd"]]);
この関数は、「bbb」の編集と「eee」の削除を報告する必要があります。そのような機能を実装する方法は?
文字列の 2 つのツリーの違いを解釈する関数を実装する方法は? 例えば:
diff(["aaa","bbb",["ccc","ddd"],"eee"],
["aaa","bbx",["ccc","ddd"]]);
この関数は、「bbb」の編集と「eee」の削除を報告する必要があります。そのような機能を実装する方法は?
単純なテキスト diff の場合は、各ツリーをフラット ファイルに変換するだけです。
各サブノードの前にタブが追加されるように、ノードを行に変換します (ネストのレベルごとに 1 つのタブ)。次に、2 つのフラット ファイルで diff を実行します。例えば:
["aaa","bbb",["ccc","ddd"],"eee"]
(エスケープタブと改行):
aaaa
bbb
ccc
ddd
eee
数値測定が必要な場合は、diff 出力の行を数えます。
派手にしたい場合は、ノードごとに実行できますが、結果が何に使用されるかによっては、それは大変な作業になります。