commit 07908bb596bb21750d0298460df12ba963a70fa6 Author: funjia <13429193897@163.com> Date: Sun Aug 25 16:31:47 2024 +0800 feat: funjia工具库v1.0.0版本 diff --git a/date.d.ts b/date.d.ts new file mode 100644 index 0000000..9a4220e --- /dev/null +++ b/date.d.ts @@ -0,0 +1,23 @@ +/** + * 日期格式化 + */ +export declare const formatDateTime: (time: string | Date, template?: string) => string | Date; +/** + * 日期格式化 + */ +export declare const fDT: (time: string | Date, template?: string) => string | Date; +/** + * 转换日期格式并带T + * 2022/2/9 19:33:33 => 2022-02-09T19:33:33 + * @param date + * @returns + */ +export declare const formDateTimeAddT: (date: string | Date) => string | Date; +/** + * 转换日期格式并带T + * 2022/2/9 19-33-33 => 2022-02-09T19-33-33 + * @param date + * @returns + */ +export declare const fDTAT: (date: string | Date) => string | Date; +//# sourceMappingURL=date.d.ts.map \ No newline at end of file diff --git a/date.d.ts.map b/date.d.ts.map new file mode 100644 index 0000000..39610df --- /dev/null +++ b/date.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,GAAG,IAAI,aACT,MAAM,kBAOjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,SAbR,MAAM,GAAG,IAAI,aACT,MAAM,kBAYe,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,GAAG,IAAI,kBAEnD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,SAVqB,MAAM,GAAG,IAAI,kBAUf,CAAC"} \ No newline at end of file diff --git a/date.js b/date.js new file mode 100644 index 0000000..a0b83f1 --- /dev/null +++ b/date.js @@ -0,0 +1,40 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fDTAT = exports.formDateTimeAddT = exports.fDT = exports.formatDateTime = void 0; +const dayjs_1 = __importDefault(require("dayjs")); +/** + * 日期格式化 + */ +const formatDateTime = (time, template = "YYYY-MM-DD HH:mm:ss") => { + try { + return (0, dayjs_1.default)(time).format(template); + } + catch (_a) { + return time; + } +}; +exports.formatDateTime = formatDateTime; +/** + * 日期格式化 + */ +exports.fDT = exports.formatDateTime; +/** + * 转换日期格式并带T + * 2022/2/9 19:33:33 => 2022-02-09T19:33:33 + * @param date + * @returns + */ +const formDateTimeAddT = (date) => { + return (0, exports.fDT)(date, "YYYY-MM-DDTHH:mm:ss"); +}; +exports.formDateTimeAddT = formDateTimeAddT; +/** + * 转换日期格式并带T + * 2022/2/9 19-33-33 => 2022-02-09T19-33-33 + * @param date + * @returns + */ +exports.fDTAT = exports.formDateTimeAddT; diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..85e7d9b --- /dev/null +++ b/index.d.ts @@ -0,0 +1,5 @@ +export * from "./date"; +export * from "./is"; +export * from "./mapLib"; +export * from "./parse"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/index.d.ts.map b/index.d.ts.map new file mode 100644 index 0000000..4d3faba --- /dev/null +++ b/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..4b7271f --- /dev/null +++ b/index.js @@ -0,0 +1,16 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./date"), exports); +__exportStar(require("./is"), exports); +__exportStar(require("./mapLib"), exports); +__exportStar(require("./parse"), exports); diff --git a/is.d.ts b/is.d.ts new file mode 100644 index 0000000..c8ff007 --- /dev/null +++ b/is.d.ts @@ -0,0 +1,34 @@ +/** + * 判断对象是否为空 + * + * @param obj + * isEmpty(null) + * // => true + * + * isEmpty(undefined) + * // => true + * + * isEmpty("") + * // => true + * + * isEmpty(NaN) + * // => true + * + * isEmpty(0) + * // => false + * + * isEmpty([1]) + * // => false + * + * isEmpty({name:"123"}) + * // => false + */ +export declare const isEmpty: (obj: any) => boolean; +/** + * 判断是否有值 + * 这个函数的结果就是对isEmpty取非 + */ +export declare const isHaveRealValue: (value: any) => boolean; +export declare const isValidIP: (ip: string) => boolean; +export declare const isIp: (ip: string) => boolean; +//# sourceMappingURL=is.d.ts.map \ No newline at end of file diff --git a/is.d.ts.map b/is.d.ts.map new file mode 100644 index 0000000..fba7b5a --- /dev/null +++ b/is.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"is.d.ts","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,OAAO,QAAS,GAAG,YAU/B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAW,GAAG,YAMzC,CAAC;AAGF,eAAO,MAAM,SAAS,OAAO,MAAM,YAGlC,CAAA;AAGD,eAAO,MAAM,IAAI,OANY,MAAM,YAMR,CAAC"} \ No newline at end of file diff --git a/is.js b/is.js new file mode 100644 index 0000000..baf053a --- /dev/null +++ b/is.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isIp = exports.isValidIP = exports.isHaveRealValue = exports.isEmpty = void 0; +/** + * 判断对象是否为空 + * + * @param obj + * isEmpty(null) + * // => true + * + * isEmpty(undefined) + * // => true + * + * isEmpty("") + * // => true + * + * isEmpty(NaN) + * // => true + * + * isEmpty(0) + * // => false + * + * isEmpty([1]) + * // => false + * + * isEmpty({name:"123"}) + * // => false + */ +const isEmpty = (obj) => { + if (typeof (obj) !== "number" && (obj === null || obj === "" || obj === undefined)) + return true; + else { + if (typeof (obj) === "number" && isNaN(obj)) { + return true; + } + return false; + } +}; +exports.isEmpty = isEmpty; +/** + * 判断是否有值 + * 这个函数的结果就是对isEmpty取非 + */ +const isHaveRealValue = (value) => { + let bool = false; + if (value || value === 0 || typeof value === 'boolean') { + bool = true; + } + return bool; +}; +exports.isHaveRealValue = isHaveRealValue; +/* IP正则验证 */ +const isValidIP = (ip) => { + var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; + return reg.test(ip); +}; +exports.isValidIP = isValidIP; +/* IP正则验证 */ +exports.isIp = exports.isValidIP; +// export const isLocalhost = Boolean( +// window.location.hostname === 'localhost' || +// // [::1] is the IPv6 localhost address. +// window.location.hostname === '[::1]' || +// // 127.0.0.1/8 is considered localhost for IPv4. +// window.location.hostname.match( +// /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ +// ) +// ); diff --git a/mapLib.d.ts b/mapLib.d.ts new file mode 100644 index 0000000..7fa7c08 --- /dev/null +++ b/mapLib.d.ts @@ -0,0 +1,65 @@ +/** + * 获取中心坐标 + */ +export default class CenterGps { + private rad2degr; + private degr2rad; + /** + * 计算多个经纬度的中心点 | 在一组坐标中获取中心坐标 + * @param latLngInDeg array of arrays with latitude and longtitude + * pairs in degrees. e.g. [[latitude1, longtitude1], [latitude2 + * [longtitude2] ...] + * + * @return array with the center latitude longtitude pairs in + * degrees. + */ + GetCenterFromDegrees(latLngInDegr: any[], latIdx?: number, lngIdx?: number): number[]; +} +/** + * 验证经纬度格式 + */ +export declare const VerifyCoordinate: (lat: string | number, lng: string | number) => boolean; +/** + * 判断给定坐标是否在多边形中 + */ +export declare function isInPolygon(checkPoint: any, polygonPoints: any): boolean; +/** + * 判断一个点是否在圆的内部 + * @param point 测试点坐标 + * @param circle 圆心坐标 + * @param r 圆半径 + * 返回true为真,false为假 + * */ +export declare function pointInsideCircle(point: any, circle: any, r: any): boolean; +/** + * 火星坐标,GPS,转换 + */ +export declare const Convert: { + PI: number; + x_pi: number; + delta: (lat: number, lng: number) => { + lat: number; + lon: number; + }; + gcj_encrypt: (wgsLat: number, wgsLon: number) => { + lat: number; + lon: number; + }; + /** + *百度坐标转高德(传入经度、纬度) + * @param bd_lng + * @param bd_lat + */ + bd_decrypt: (bd_lng: number, bd_lat: number) => { + lng: number; + lat: number; + }; + bd_encrypt: (gg_lng: number, gg_lat: number) => { + bd_lat: number; + bd_lng: number; + }; + outOfChina: (lat: number, lng: number) => boolean; + transformLat: (x: number, y: number) => number; + transformLon: (x: number, y: number) => number; +}; +//# sourceMappingURL=mapLib.d.ts.map \ No newline at end of file diff --git a/mapLib.d.ts.map b/mapLib.d.ts.map new file mode 100644 index 0000000..bee1e56 --- /dev/null +++ b/mapLib.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mapLib.d.ts","sourceRoot":"","sources":["../src/mapLib.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAEhB;;;;;;;;OAQG;IACH,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,MAAM,SAAI,EAAE,MAAM,SAAI;CA2BnE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,MAAM,OAAO,MAAM,GAAG,MAAM,YAa1E,CAAA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,WAkC9D;AAED;;;;;;QAMQ;AACR,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,WAKhE;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;;;iBAGM,MAAM,OAAO,MAAM;;;;0BAqBV,MAAM,UAAU,MAAM;;;;IAOrD;;;;OAIG;yBAC2B,MAAM,UAAU,MAAM;;;;yBAYtB,MAAM,UAAU,MAAM;;;;sBAYzB,MAAM,OAAO,MAAM;sBAOnB,MAAM,KAAK,MAAM;sBAOjB,MAAM,KAAK,MAAM;CAO/C,CAAC"} \ No newline at end of file diff --git a/mapLib.js b/mapLib.js new file mode 100644 index 0000000..64f59e2 --- /dev/null +++ b/mapLib.js @@ -0,0 +1,194 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Convert = exports.pointInsideCircle = exports.isInPolygon = exports.VerifyCoordinate = void 0; +/** + * 获取中心坐标 + */ +class CenterGps { + rad2degr(rad) { return rad * 180 / Math.PI; } + degr2rad(degr) { return degr * Math.PI / 180; } + /** + * 计算多个经纬度的中心点 | 在一组坐标中获取中心坐标 + * @param latLngInDeg array of arrays with latitude and longtitude + * pairs in degrees. e.g. [[latitude1, longtitude1], [latitude2 + * [longtitude2] ...] + * + * @return array with the center latitude longtitude pairs in + * degrees. + */ + GetCenterFromDegrees(latLngInDegr, latIdx = 0, lngIdx = 1) { + var LATIDX = latIdx; + var LNGIDX = lngIdx; + var sumX = 0; + var sumY = 0; + var sumZ = 0; + for (var i = 0; i < latLngInDegr.length; i++) { + var lat = this.degr2rad(latLngInDegr[i][LATIDX]); + var lng = this.degr2rad(latLngInDegr[i][LNGIDX]); + // sum of cartesian coordinates + sumX += Math.cos(lat) * Math.cos(lng); + sumY += Math.cos(lat) * Math.sin(lng); + sumZ += Math.sin(lat); + } + var avgX = sumX / latLngInDegr.length; + var avgY = sumY / latLngInDegr.length; + var avgZ = sumZ / latLngInDegr.length; + // convert average x, y, z coordinate to latitude and longtitude + var lng = Math.atan2(avgY, avgX); + var hyp = Math.sqrt(avgX * avgX + avgY * avgY); + var lat = Math.atan2(avgZ, hyp); + return ([this.rad2degr(lat), this.rad2degr(lng)]); + } +} +exports.default = CenterGps; +/** + * 验证经纬度格式 + */ +const VerifyCoordinate = (lat, lng) => { + var latreg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,}|90\.0{0,}|[0-8]?\d{1}|90)$/; + if (!latreg.test(lat.toString())) { + console.log("纬度整数部分为0-90,小数部分为0到6位!"); + return false; + } + var longrg = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,}|180)$/; + if (!longrg.test(lng.toString())) { + console.log("经度整数部分为0-180,小数部分为0到6位!"); + return false; + } + return true; +}; +exports.VerifyCoordinate = VerifyCoordinate; +/** + * 判断给定坐标是否在多边形中 + */ +function isInPolygon(checkPoint, polygonPoints) { + var counter = 0; + var i; + var xinters; + var p1, p2; + var pointCount = polygonPoints.length; + p1 = polygonPoints[0]; + for (i = 1; i <= pointCount; i++) { + p2 = polygonPoints[i % pointCount]; + if (checkPoint[0] > Math.min(p1[0], p2[0]) && + checkPoint[0] <= Math.max(p1[0], p2[0])) { + if (checkPoint[1] <= Math.max(p1[1], p2[1])) { + if (p1[0] != p2[0]) { + xinters = + (checkPoint[0] - p1[0]) * + (p2[1] - p1[1]) / + (p2[0] - p1[0]) + + p1[1]; + if (p1[1] == p2[1] || checkPoint[1] <= xinters) { + counter++; + } + } + } + } + p1 = p2; + } + if (counter % 2 == 0) { + return false; + } + else { + return true; + } +} +exports.isInPolygon = isInPolygon; +/** + * 判断一个点是否在圆的内部 + * @param point 测试点坐标 + * @param circle 圆心坐标 + * @param r 圆半径 + * 返回true为真,false为假 + * */ +function pointInsideCircle(point, circle, r) { + if (r === 0) + return false; + var dx = circle[0] - point[0]; + var dy = circle[1] - point[1]; + return dx * dx + dy * dy <= r * r; +} +exports.pointInsideCircle = pointInsideCircle; +/** + * 火星坐标,GPS,转换 + */ +exports.Convert = { + PI: 3.14159265358979324, + x_pi: 3.14159265358979324 * 3000.0 / 180.0, + delta: function (lat, lng) { + let lon = lng; + // Krasovsky 1940 + // + // a = 6378245.0, 1/f = 298.3 + // b = a * (1 - f) + // ee = (a^2 - b^2) / a^2; + let a = 6378245.0; // a: 卫星椭球坐标投影到平面地图坐标系的投影因子。 + let ee = 0.00669342162296594323; // ee: 椭球的偏心率。 + let dLat = this.transformLat(lon - 105.0, lat - 35.0); + let dLon = this.transformLon(lon - 105.0, lat - 35.0); + let radLat = lat / 180.0 * this.PI; + let magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + let sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * this.PI); + dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * this.PI); + return { 'lat': dLat, 'lon': dLon }; + }, + //GPS---高德 + gcj_encrypt: function (wgsLat, wgsLon) { + if (this.outOfChina(wgsLat, wgsLon)) + return { 'lat': wgsLat, 'lon': wgsLon }; + let d = this.delta(wgsLat, wgsLon); + return { 'lat': wgsLat + d.lat, 'lon': wgsLon + d.lon }; + }, + /** + *百度坐标转高德(传入经度、纬度) + * @param bd_lng + * @param bd_lat + */ + bd_decrypt: function (bd_lng, bd_lat) { + var X_PI = Math.PI * 3000.0 / 180.0; + var x = bd_lng - 0.0065; + var y = bd_lat - 0.006; + var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI); + var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI); + var gg_lng = z * Math.cos(theta); + var gg_lat = z * Math.sin(theta); + return { lng: gg_lng, lat: gg_lat }; + }, + //高德坐标转百度(传入经度、纬度) + bd_encrypt: function (gg_lng, gg_lat) { + var X_PI = Math.PI * 3000.0 / 180.0; + var x = gg_lng, y = gg_lat; + var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI); + var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI); + var bd_lng = z * Math.cos(theta) + 0.0065; + var bd_lat = z * Math.sin(theta) + 0.006; + return { + bd_lat: bd_lat, + bd_lng: bd_lng + }; + }, + outOfChina: function (lat, lng) { + if (lng < 72.004 || lng > 137.8347) + return true; + if (lat < 0.8293 || lat > 55.8271) + return true; + return false; + }, + transformLat: function (x, y) { + let ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * this.PI) + 20.0 * Math.sin(2.0 * x * this.PI)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(y * this.PI) + 40.0 * Math.sin(y / 3.0 * this.PI)) * 2.0 / 3.0; + ret += (160.0 * Math.sin(y / 12.0 * this.PI) + 320 * Math.sin(y * this.PI / 30.0)) * 2.0 / 3.0; + return ret; + }, + transformLon: function (x, y) { + let ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * this.PI) + 20.0 * Math.sin(2.0 * x * this.PI)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(x * this.PI) + 40.0 * Math.sin(x / 3.0 * this.PI)) * 2.0 / 3.0; + ret += (150.0 * Math.sin(x / 12.0 * this.PI) + 300.0 * Math.sin(x / 30.0 * this.PI)) * 2.0 / 3.0; + return ret; + } +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..0a5ffbc --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "name": "funjialib", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "types": "./index.d.ts", + "description": "" +} diff --git a/parse.d.ts b/parse.d.ts new file mode 100644 index 0000000..93dbbbf --- /dev/null +++ b/parse.d.ts @@ -0,0 +1,28 @@ +/** + * 根据指定类型生成新类型的数据 + * @param originalInfo 原始数据,需要转换类型的数据 + * @param newInfo 转换类型之后的数据 + */ +export declare function parseType(originalInfo: any, newInfo: any, mapper?: [string[], string[]] | null): T; +/** + * 尝试获取子属性的值并且出错时可返回指定类型的默认值 + * 链式获取数据 + * {children:{children:{name,age}}} 获取name的值 + * tryValue({children:{chidren:{name,age}}},["children","children","name"],"--") + * @param obj 原始对象 + * @param names 按层级排列的子属性 + * @param defV 指定返回的默认值 + */ +export declare const tryValue: (obj: Array | Object, names: any[], defV?: any) => any; +export declare const tV: (obj: Array | Object, names: any[], defV?: any) => any; +/** + * 格式化表单 + * 方法实现参考地址:https://www.cnblogs.com/yaowen/p/5574923.html + */ +export declare const formatForm: (data: any, defValue?: any) => any; +export declare const fF: (data: any, defValue?: any) => any; +/** + * 转换为数字 + */ +export declare const parseNumber: (value: any) => number; +//# sourceMappingURL=parse.d.ts.map \ No newline at end of file diff --git a/parse.d.ts.map b/parse.d.ts.map new file mode 100644 index 0000000..7d5c659 --- /dev/null +++ b/parse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAE,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAW,GAAG,CAAC,CA6B3G;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,QAAS,MAAM,GAAG,CAAC,GAAG,MAAM,SAAS,GAAG,EAAE,SAAQ,GAAG,QAsBzE,CAAA;AAED,eAAO,MAAM,EAAE,QAxBe,MAAM,GAAG,CAAC,GAAG,MAAM,SAAS,GAAG,EAAE,SAAQ,GAAG,QAwBhD,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,GAAG,aAAY,GAAG,QAoBlD,CAAA;AAED,eAAO,MAAM,EAAE,SAtBkB,GAAG,aAAY,GAAG,QAsBvB,CAAC;AAE7B;;GAEG;AACF,eAAO,MAAM,WAAW,UAAW,GAAG,WAMtC,CAAA"} \ No newline at end of file diff --git a/parse.js b/parse.js new file mode 100644 index 0000000..dd0eaac --- /dev/null +++ b/parse.js @@ -0,0 +1,111 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseNumber = exports.fF = exports.formatForm = exports.tV = exports.tryValue = exports.parseType = void 0; +const is_1 = require("./is"); +/** + * 根据指定类型生成新类型的数据 + * @param originalInfo 原始数据,需要转换类型的数据 + * @param newInfo 转换类型之后的数据 + */ +function parseType(originalInfo, newInfo, mapper = null) { + var _a; + if (originalInfo) { + if ((0, is_1.isEmpty)(mapper)) { + for (const name in newInfo) { + if (originalInfo.hasOwnProperty(name)) { + newInfo[name] = originalInfo[name]; + } + } + } + else { + let fieldIdx = -1; + let originalFieldName = ""; + let name; + for (name in newInfo) { + fieldIdx = mapper === null || mapper === void 0 ? void 0 : mapper[0].indexOf(name); + originalFieldName = ((_a = mapper === null || mapper === void 0 ? void 0 : mapper[1]) === null || _a === void 0 ? void 0 : _a[(0, is_1.isEmpty)(fieldIdx) ? -1 : (fieldIdx || 0)]) || ""; + console.log(name, fieldIdx, originalFieldName, "字段:", originalFieldName); + if (originalFieldName) { + if (originalInfo.hasOwnProperty(originalFieldName)) { + newInfo[name] = originalInfo[originalFieldName]; + } + } + } + } + } + else { + return newInfo; + } + return newInfo; +} +exports.parseType = parseType; +/** + * 尝试获取子属性的值并且出错时可返回指定类型的默认值 + * 链式获取数据 + * {children:{children:{name,age}}} 获取name的值 + * tryValue({children:{chidren:{name,age}}},["children","children","name"],"--") + * @param obj 原始对象 + * @param names 按层级排列的子属性 + * @param defV 指定返回的默认值 + */ +const tryValue = (obj, names, defV = null) => { + let _obj = obj; + const getDeepValue = (item, name) => { + return item[name]; + }; + try { + names.forEach(item => { + _obj = getDeepValue(_obj, item); + }); + if ((0, is_1.isEmpty)(_obj)) { + return defV; + } + if (isNaN(_obj)) + return defV; + else + return _obj; + } + catch (error) { + return defV; + } +}; +exports.tryValue = tryValue; +exports.tV = exports.tryValue; +/** + * 格式化表单 + * 方法实现参考地址:https://www.cnblogs.com/yaowen/p/5574923.html + */ +const formatForm = (data, defValue = undefined) => { + /** + * 格式化表单一 + * 清楚字符串前后空格 + */ + // 目前只对集合处理 + if (data) { + const isObject = data.toString() == "[object Object]" ? true : false; + if (isObject) { + const objs = Object.keys(data), len = objs.length; + for (let i = 0; i < len; i++) { + if (typeof (data[objs[i]]) == "string") { + data[objs[i]] = data[objs[i]].trim(); + } + const v = data[objs[i]]; + data[objs[i]] = (0, is_1.isEmpty)(v) ? defValue : v; + } + } + } + return data; +}; +exports.formatForm = formatForm; +exports.fF = exports.formatForm; +/** + * 转换为数字 + */ +const parseNumber = (value) => { + const num = parseInt(value === null || value === void 0 ? void 0 : value.toString()); + if (isNaN(num)) + return 1; + else + return num; +}; +exports.parseNumber = parseNumber;