array-merge
3-way merging of arrays in javascript.
You just have to pass in the diffs to the original array using array-diff's format.
In the following example an optimal solution can be found as there are no edit conflicts:
var merge =var diff = unique:truevar origin = 1 2 3 4 5var modified1 = 1 6 2 3 5 4var modified2 = 1 2 3 4 7 5var merged = merge// returns:result: 1 6 2 3 7 5 4
In this scenario we have order conflicts and we get the closest possible solution for each modified array:
var origin = 1 2 3 4 5var modified1 = 2 6 1 3 5 4var modified2 = 2 3 1 4 7 5var merged = merge// returns:conflict: true result: 2 6 1 3 7 5 4 2 6 3 1 7 5 4
We can even do n-way merges - whenever there are order conflicts the order for that specific conflict is retained in each array:
var o = 1 2 3 4 5var changes =2 6 1 3 5 42 3 1 4 7 51 2 3 4 51 8 2 3 4 5var diffs = changesvar merged =// returns:conflict: true result: 82613754826317541826375418263754