diff --git a/package-lock.json b/package-lock.json index 8ba84e9276eaacb585ef65cca6d9f28ead1df8a9..0373505ada6b8277b86d9bf71810ea73ffbfdabb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "leaflet": "^1.9.4" + "leaflet": "^1.9.4", + "lodash": "^4.17.21" }, "devDependencies": { "live-server": "^1.2.2" @@ -1008,6 +1009,11 @@ "node": ">=0.10.0" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", diff --git a/package.json b/package.json index e1c658e65b7aa4262ceaf933a857a721a66acc06..8bd5a9e017f48d6f1e6ed17ebde19919a3ef65cf 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,12 @@ "version": "1.0.0", "description": "just 4 learn", "main": "index.js", + "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "dev": "live-server ./leaflet" + "dev": "live-server ./leaflet", + "===": "test", + "test_js": "node ./utils/test/js/index.js" }, "keywords": [ "study" @@ -13,7 +16,8 @@ "author": "yemao", "license": "ISC", "dependencies": { - "leaflet": "^1.9.4" + "leaflet": "^1.9.4", + "lodash": "^4.17.21" }, "devDependencies": { "live-server": "^1.2.2" diff --git a/utils/js/object.js b/utils/js/object.js new file mode 100644 index 0000000000000000000000000000000000000000..fa965191a06ec899103d0ef2c3312ca5f2e9d8cb --- /dev/null +++ b/utils/js/object.js @@ -0,0 +1,70 @@ +/* +1. 转换测试 +2. 编写函数 +3. 单元测试 +*/ + +import _ from 'lodash' + +function snakeCaseObject(originObj) { + if (!_.isObject(originObj)) { + return originObj + } + + const ret = {}; + + for (let key in originObj) { + let val = originObj[key] + // console.log(key, val) + + // 将key转换为下划线方式 + let keyNew = _.snakeCase(key) + ret[keyNew] = val + } + + return ret +} + +function camelCaseObject(originObj) { + if (!_.isObject(originObj)) { + return originObj + } + + const ret = {}; + + for (let key in originObj) { + let val = originObj[key] + // console.log(key, val) + + // 将key转换为下划线方式 + let keyNew = _.camelCase(key) + ret[keyNew] = val + } + + return ret +} + +function kebabCaseObject(originObj) { + if (!_.isObject(originObj)) { + return originObj + } + + const ret = {}; + + for (let key in originObj) { + let val = originObj[key] + // console.log(key, val) + + // 将key转换为下划线方式 + let keyNew = _.kebabCase(key) + ret[keyNew] = val + } + + return ret +} + +export { + camelCaseObject, + snakeCaseObject, + kebabCaseObject, +} \ No newline at end of file diff --git a/utils/test/js/index.js b/utils/test/js/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c1b483942aa08641b3330b8f03f9e7bfe7d4f5d1 --- /dev/null +++ b/utils/test/js/index.js @@ -0,0 +1,23 @@ +import _ from 'lodash' +import {camelCaseObject, snakeCaseObject, kebabCaseObject} from '../../js/object.js' + +function test() { + // lodash库函数测试 + console.log(_.isObject({})) + console.log(_.isObject(1)) + console.log(_.isObject(null)) + console.log(_.camelCase('a_bc')) // aBc + console.log(_.snakeCase('aBc')) // a_bc + console.log(_.kebabCase('aBc')) // a-bc + + // 单元测试 + let obj = {aBc: 1, en: 'khz', cnNew: '华仔'} + let objSnake = snakeCaseObject(obj) + console.log(objSnake) // { a_bc: 1, en: 'khz', cn_new: '华仔' } + let objCamel = camelCaseObject(objSnake) + console.log(objCamel) // { aBc: 1, en: 'khz', cnNew: '华仔' } + let objKebab = kebabCaseObject(objSnake) + console.log(objKebab) // { 'a-bc': 1, en: 'khz', 'cn-new': '华仔' } +} + +test()