# zh-tools **Repository Path**: zhanghao161512/zh-tools ## Basic Information - **Project Name**: zh-tools - **Description**: 我的js工具库,目前包含Excel,文件,数组处理 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.npmjs.com/package/zhangyida-tools - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-28 - **Last Updated**: 2023-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 例子 ## FileEntity ```javascript const {FileEntity} = require('../index'); const tempPath = FileEntity.pathJoin(__dirname, './temp'); const fileEntity = FileEntity.of(tempPath); console.log(fileEntity) const tempFile = fileEntity.createFile('temp.txt', 'test'); console.log(tempFile) tempFile.rename('temp2.txt'); console.log(tempFile) tempFile.remove(); ``` ### 控制台输出 ```shell FileEntity { fileName: 'temp', filePath: 'D:/Gitee/zh-tools/test/temp', type: 'folder', size: 0, removed: false } FileEntity { fileName: 'temp.txt', filePath: 'D:/Gitee/zh-tools/test/temp/temp.txt', type: 'file', size: 4, removed: false } FileEntity { fileName: 'temp2.txt', filePath: 'D:/Gitee/zh-tools/test/temp/temp2.txt', type: 'file', size: 4, removed: false } ``` ## array util ```javascript const {setProperty, getProperty, setProperties} = require('../index'); const users = [ { id: 1, name: 'zh', age: 10, department_id: 1, role_ids: [1, 2] }, { id: 2, name: 'zh2', age: 11, department_id: 1, role_ids: [1, 3] }, { id: 3, name: 'zh3', age: 12, department_id: 2, role_ids: [2, 3] }, { id: 4, name: 'zh4', age: 13, department_id: 2, role_ids: [3] }, ] const roles = [ { id: 1, name: 'User' }, { id: 2, name: 'Admin' }, { id: 3, name: 'Test' }, ] const departments = [ { id: 1, name: 'department1' }, { id: 2, name: 'department2' }, ] const department_ids = getProperty(users, 'department_id'); console.log(department_ids) setProperty(users, departments, (dbEntity, entity) => dbEntity.id === entity.department_id, (dbEntity, entity) => { entity.department = dbEntity; }) console.log(users) setProperties(users, roles, (dbEntity, entity) => entity.role_ids.includes(dbEntity.id), (dbEntity, entity) => { entity.roles = dbEntity }) console.log(JSON.stringify(users, null, 2)) ``` ### 控制台输出 ```shell [ 1, 2 ] [ { id: 1, name: 'zh', age: 10, department_id: 1, role_ids: [ 1, 2 ], department: { id: 1, name: 'department1' } }, { id: 2, name: 'zh2', age: 11, department_id: 1, role_ids: [ 1, 3 ], department: { id: 1, name: 'department1' } }, { id: 3, name: 'zh3', age: 12, department_id: 2, role_ids: [ 2, 3 ], department: { id: 2, name: 'department2' } }, { id: 4, name: 'zh4', age: 13, department_id: 2, role_ids: [ 3 ], department: { id: 2, name: 'department2' } } ] [ { "id": 1, "name": "zh", "age": 10, "department_id": 1, "role_ids": [ 1, 2 ], "department": { "id": 1, "name": "department1" }, "roles": [ { "id": 1, "name": "User" }, { "id": 2, "name": "Admin" } ] }, { "id": 2, "name": "zh2", "age": 11, "department_id": 1, "role_ids": [ 1, 3 ], "department": { "id": 1, "name": "department1" }, "roles": [ { "id": 1, "name": "User" }, { "id": 3, "name": "Test" } ] }, { "id": 3, "name": "zh3", "age": 12, "department_id": 2, "role_ids": [ 2, 3 ], "department": { "id": 2, "name": "department2" }, "roles": [ { "id": 2, "name": "Admin" }, { "id": 3, "name": "Test" } ] }, { "id": 4, "name": "zh4", "age": 13, "department_id": 2, "role_ids": [ 3 ], "department": { "id": 2, "name": "department2" }, "roles": [ { "id": 3, "name": "Test" } ] } ] ``` # 描述文件 ```typescript export class FileEntity { fileName: string filePath: string type: 'folder' | 'file' size: number removed: boolean getParentFolderPath(): string; static fetch(path: string, isFolder?: boolean): FileEntity[] getNewPath(targetPath: string, isMove?: boolean): string; static of(filePath: string): FileEntity remove(): void; isDirectory(): boolean; isFile(): boolean; move(targetPath: string): void rename(newName: string): void copy(targetPath: string): void static validateDir(targetPath: string): void static pathJoin(...paths: string[]): string createChildFolder(name: string): FileEntity createFile(name: string, fileContent: any): FileEntity } export type Pipe = (element: Entity) => object | void export function getProperty(entities: Entity[], propertyName?: string, pipe?: Pipe); export type Match = (dbEntity: DbEntity, entity: Entity) => boolean; export type Set = (dbEntity: DbEntity | DbEntity[], entity: Entity) => Entity | void; export type NotFoundProcess = (entity: Entity) => void; export type MatchAndSet = { match: Match, set: Set } export function setProperty(entities: Entity[], dbEntities: DbEntity[], match: Match, set: Set, moreMatchAndSet?: MatchAndSet[]); export function setProperties(entities: Entity[], dbEntities: DbEntity[], match: Match, set: Set); ```