From 07908bb596bb21750d0298460df12ba963a70fa6 Mon Sep 17 00:00:00 2001 From: funjia <13429193897@163.com> Date: Sun, 25 Aug 2024 16:31:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20funjia=E5=B7=A5=E5=85=B7=E5=BA=93v1.0.0?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- date.d.ts | 23 ++++++ date.d.ts.map | 1 + date.js | 40 ++++++++++ index.d.ts | 5 ++ index.d.ts.map | 1 + index.js | 16 ++++ is.d.ts | 34 +++++++++ is.d.ts.map | 1 + is.js | 68 +++++++++++++++++ mapLib.d.ts | 65 ++++++++++++++++ mapLib.d.ts.map | 1 + mapLib.js | 194 ++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 12 +++ parse.d.ts | 28 +++++++ parse.d.ts.map | 1 + parse.js | 111 +++++++++++++++++++++++++++ 16 files changed, 601 insertions(+) create mode 100644 date.d.ts create mode 100644 date.d.ts.map create mode 100644 date.js create mode 100644 index.d.ts create mode 100644 index.d.ts.map create mode 100644 index.js create mode 100644 is.d.ts create mode 100644 is.d.ts.map create mode 100644 is.js create mode 100644 mapLib.d.ts create mode 100644 mapLib.d.ts.map create mode 100644 mapLib.js create mode 100644 package.json create mode 100644 parse.d.ts create mode 100644 parse.d.ts.map create mode 100644 parse.js 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;