diff --git a/docs/docs/api/model/node-children.md b/docs/docs/api/model/node-children.md index 10488a733..219e6bbc1 100644 --- a/docs/docs/api/model/node-children.md +++ b/docs/docs/api/model/node-children.md @@ -156,6 +156,21 @@ forEach(fn: (node: IPublicModelNode, index: number) => void): void; 相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +### reverse + +类似数组的 reverse + +```typescript +/** + * 类似数组的 reverse + * provide the same function with {Array.prototype.reverse} + */ +reverse(): IPublicModelNode[]; + +``` + +相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) + ### map diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index d370a797b..12a9e75ba 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -54,6 +54,8 @@ export interface INodeChildren extends Omit<IPublicModelNodeChildren, 'forEach' reduce(fn: (acc: any, cur: INode) => any, initialValue: any): void; + reverse(): INode[]; + mergeChildren( remover: (node: INode, idx: number) => boolean, adder: (children: INode[]) => IPublicTypeNodeData[] | null, @@ -442,6 +444,10 @@ export class NodeChildren implements INodeChildren { return this.children.reduce(fn, initialValue); } + reverse() { + return this.children.reverse(); + } + mergeChildren( remover: (node: INode, idx: number) => boolean, adder: (children: INode[]) => IPublicTypeNodeData[] | null, diff --git a/packages/shell/src/model/node-children.ts b/packages/shell/src/model/node-children.ts index 0192268bc..4d1cc0a22 100644 --- a/packages/shell/src/model/node-children.ts +++ b/packages/shell/src/model/node-children.ts @@ -129,6 +129,15 @@ export class NodeChildren implements IPublicModelNodeChildren { }); } + /** + * 类似数组的 reverse + */ + reverse(): IPublicModelNode[] { + return this[nodeChildrenSymbol].reverse().map(d => { + return ShellNode.create(d)!; + }); + } + /** * 类似数组的 map * @param fn diff --git a/packages/types/src/shell/model/node-children.ts b/packages/types/src/shell/model/node-children.ts index d18bf78a3..0379194bf 100644 --- a/packages/types/src/shell/model/node-children.ts +++ b/packages/types/src/shell/model/node-children.ts @@ -96,6 +96,12 @@ export interface IPublicModelNodeChildren { */ forEach(fn: (node: IPublicModelNode, index: number) => void): void; + /** + * 类似数组的 reverse + * provide the same function with {Array.prototype.reverse} + */ + reverse(): IPublicModelNode[]; + /** * 类似数组的 map * provide the same function with {Array.prototype.map}