getTreeDiff.js 608 B

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