feat: add reverse api to node-children model

This commit is contained in:
liujuping 2023-02-22 12:07:42 +08:00 committed by 林熠
parent 319d495d3b
commit 1f09b639fb
4 changed files with 36 additions and 0 deletions

View File

@ -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) 相关类型:[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 ### map

View File

@ -54,6 +54,8 @@ export interface INodeChildren extends Omit<IPublicModelNodeChildren, 'forEach'
reduce(fn: (acc: any, cur: INode) => any, initialValue: any): void; reduce(fn: (acc: any, cur: INode) => any, initialValue: any): void;
reverse(): INode[];
mergeChildren( mergeChildren(
remover: (node: INode, idx: number) => boolean, remover: (node: INode, idx: number) => boolean,
adder: (children: INode[]) => IPublicTypeNodeData[] | null, adder: (children: INode[]) => IPublicTypeNodeData[] | null,
@ -442,6 +444,10 @@ export class NodeChildren implements INodeChildren {
return this.children.reduce(fn, initialValue); return this.children.reduce(fn, initialValue);
} }
reverse() {
return this.children.reverse();
}
mergeChildren( mergeChildren(
remover: (node: INode, idx: number) => boolean, remover: (node: INode, idx: number) => boolean,
adder: (children: INode[]) => IPublicTypeNodeData[] | null, adder: (children: INode[]) => IPublicTypeNodeData[] | null,

View File

@ -129,6 +129,15 @@ export class NodeChildren implements IPublicModelNodeChildren {
}); });
} }
/**
* reverse
*/
reverse(): IPublicModelNode[] {
return this[nodeChildrenSymbol].reverse().map(d => {
return ShellNode.create(d)!;
});
}
/** /**
* map * map
* @param fn * @param fn

View File

@ -96,6 +96,12 @@ export interface IPublicModelNodeChildren {
*/ */
forEach(fn: (node: IPublicModelNode, index: number) => void): void; forEach(fn: (node: IPublicModelNode, index: number) => void): void;
/**
* reverse
* provide the same function with {Array.prototype.reverse}
*/
reverse(): IPublicModelNode[];
/** /**
* map * map
* provide the same function with {Array.prototype.map} * provide the same function with {Array.prototype.map}