getTreeDiff.js 582 B

1234567891011121314151617181920212223
  1. function getTreeDiff(a, b) {
  2. const treeA = [];
  3. for(let el = a; el; el = el.parentElement){
  4. treeA.push(el);
  5. }
  6. const treeB = [];
  7. for(let el = b; el; el = el.parentElement){
  8. treeB.push(el);
  9. }
  10. let i = 0;
  11. for(;; i++){
  12. if (i >= treeA.length || i >= treeB.length || treeA[treeA.length - 1 - i] !== treeB[treeB.length - 1 - i]) {
  13. break;
  14. }
  15. }
  16. return [
  17. treeA.slice(0, treeA.length - i),
  18. treeB.slice(0, treeB.length - i),
  19. treeB.slice(treeB.length - i)
  20. ];
  21. }
  22. export { getTreeDiff };