switchChainNode(fromNode, targetNode) {
            let attrFromNode = {
                index: fromNode.index,
                prev: fromNode.prev,
                next: fromNode.next
            };
            let attrTargetNode = {
                index: targetNode.index,
                prev: targetNode.prev,
                next: targetNode.next
            };

            let isSibling = attrTargetNode.prev === fromNode;
            // 交换index 
            // 更改prev next

            if (attrFromNode.prev) {
                attrFromNode.prev.next = targetNode;
            }

            if (attrTargetNode.next) {
                attrTargetNode.next.prev = fromNode;
            }

            targetNode.prev = attrFromNode.prev;
            fromNode.next = attrTargetNode.next;

            if (isSibling) {
                targetNode.next = fromNode;
                fromNode.prev = targetNode;
            } else {
                targetNode.next = attrFromNode.next;
                fromNode.prev = attrTargetNode.prev;

                if (attrTargetNode.prev) {
                    attrTargetNode.prev.next = fromNode;
                }
                if (attrFromNode.next) {
                    attrFromNode.next.prev = targetNode;
                }
            }

            fromNode.index = attrTargetNode.index;
            targetNode.index = attrFromNode.index;
        }

 

相关文章:

  • 2021-05-19
  • 2021-12-06
  • 2022-03-09
  • 2021-06-27
  • 2022-12-23
猜你喜欢
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
  • 2021-11-15
  • 2022-12-23
  • 2021-07-12
相关资源
相似解决方案