JavaScript使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝
導(dǎo)讀
需求
爬蟲中經(jīng)常出現(xiàn)各種類型的命名,往往一個(gè)對(duì)象,幾十個(gè)字段的命名風(fēng)格都不是自己想要的,這時(shí)候就需要將整個(gè)對(duì)象自動(dòng)轉(zhuǎn)為自己想要的風(fēng)格,而不是手動(dòng)一個(gè)個(gè)轉(zhuǎn)換。
{aBc: 1, en: 'khz', cnNew: '華仔'}
轉(zhuǎn)為
{ a_bc: 1, en: 'khz', cn_new: '華仔' }
開發(fā)環(huán)境
版本號(hào) | 描述 | |
---|---|---|
文章日期 | 2023-11-16 | |
操作系統(tǒng) | Win10 - 22H2 | 19045.3570 |
lodash | 4.17.21 |
lodash轉(zhuǎn)換函數(shù)
Lodash 是一個(gè) JavaScript 的工具庫(kù),它提供了一系列的函數(shù)來(lái)簡(jiǎn)化代碼編寫。Lodash 提供了很多功能,包括數(shù)組操作、對(duì)象操作、字符串操作等。
使用 Lodash 可以大大簡(jiǎn)化代碼,提高代碼的可讀性和可維護(hù)性。它的函數(shù)提供了簡(jiǎn)單且一致的接口,可以幫助開發(fā)人員快速編寫干凈、可擴(kuò)展的代碼。
h3
lodash支持6個(gè)轉(zhuǎn)行函數(shù):
- camelCase 轉(zhuǎn)換字符串string為駝峰寫法。
- kebabCase 轉(zhuǎn)換字符串string為烤串寫法。
- snakeCase 轉(zhuǎn)換字符串string為下劃線寫法。
- lowerCase 轉(zhuǎn)換字符串string為小寫 空格寫法。
- upperCase 轉(zhuǎn)換字符串string為大寫 空格寫法。
- startCase 轉(zhuǎn)換字符串string為所有單詞首字母大寫,標(biāo)題中常見寫法。
本章節(jié)只關(guān)心前三種,示例如下:
import _ from 'lodash' function test() { // lodash庫(kù)函數(shù)測(cè)試 console.log(_.camelCase('a_bc')) // aBc console.log(_.snakeCase('aBc')) // a_bc console.log(_.kebabCase('aBc')) // a-bc }
與underscore比較
underscore 庫(kù)提供了一些實(shí)用的函數(shù),用于簡(jiǎn)化 JavaScript 編程和提高開發(fā)效率。
underscore 內(nèi)置了多種實(shí)用的函數(shù),例如字符串操作、數(shù)組操作、對(duì)象操作、日期操作等等。這些函數(shù)都非常實(shí)用,可以在開發(fā)中大大簡(jiǎn)化代碼,提高開發(fā)效率。
Underscore.js 和 Lodash.js 是 JavaScript 中開發(fā)人員使用最廣泛的兩個(gè)擴(kuò)展庫(kù),它們主要用于簡(jiǎn)化和增強(qiáng) JavaScript 代碼。它們的名字很相似,功能也相似,但它們也存在一些差異:
1.發(fā)行時(shí)間 Underscore.js 發(fā)行于 2010 年,是最早的 JavaScript 擴(kuò)展庫(kù),而 Lodash.js 發(fā)行于 2012 年。
2.函數(shù)數(shù)量和功能 Underscore.js 和 Lodash.js 都提供了大量的函數(shù),以幫助開發(fā)人員處理常見的 JavaScript 操作。但 Lodash.js 比 Underscore.js 提供了更多的函數(shù)。總的來(lái)說(shuō),Lodash.js 在功能上比 Underscore.js 更為強(qiáng)大。
3.性能 在某些情況下,Lodash.js 比 Underscore.js 具有更好的性能,因?yàn)樗褂昧艘恍﹥?yōu)化技術(shù)。
4.社區(qū)和支持 由于歷史原因, Underscore.js 的社區(qū)更為龐大,使用人數(shù)眾多。而 Lodash.js 在最近幾年得到了更多開發(fā)者的支持,因此它在社區(qū)和支持方面看起來(lái)更為活躍。
實(shí)戰(zhàn):對(duì)象屬性名轉(zhuǎn)換
函數(shù)封裝
本節(jié)對(duì)snakeCase、camelCase、kebabCase進(jìn)行封裝,三個(gè)函數(shù)結(jié)構(gòu)類似,主要邏輯都是遍歷對(duì)象key,將key轉(zhuǎn)換后返回新的對(duì)象。
代碼如下:
/* 1. 轉(zhuǎn)換測(cè)試 2. 編寫函數(shù) 3. 單元測(cè)試 */ 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轉(zhuǎn)換為下劃線方式 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轉(zhuǎn)換為駝峰方式 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轉(zhuǎn)換 let keyNew = _.kebabCase(key) ret[keyNew] = val } return ret } export { camelCaseObject, snakeCaseObject, kebabCaseObject, }
單元測(cè)試
import _ from 'lodash' import {camelCaseObject, snakeCaseObject, kebabCaseObject} from '../../js/object.js' function test() { // 單元測(cè)試 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()
文章小結(jié)
本章對(duì)lodash進(jìn)行了介紹,并對(duì)其中的轉(zhuǎn)換函數(shù)進(jìn)行了簡(jiǎn)單的測(cè)試。
然后封裝了幾個(gè)函數(shù)用于工作中,節(jié)省人工,希望能對(duì)大家有所幫助。
以上就是JavaScript使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝的詳細(xì)內(nèi)容,更多關(guān)于JavaScript lodash命名轉(zhuǎn)換和封裝的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS實(shí)現(xiàn)仿騰訊微博無(wú)刷新刪除微博效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)仿騰訊微博無(wú)刷新刪除微博效果代碼,涉及JavaScript實(shí)現(xiàn)Ajax無(wú)刷新刪除的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10js使瀏覽器窗口最大化實(shí)現(xiàn)代碼(適用于IE)
點(diǎn)擊最大化按鈕后,瀏覽器的內(nèi)容填充滿顯示器,瀏覽器窗口的邊框被擠出顯示器。而該js的最大化效果是瀏覽器的邊框在顯示器內(nèi)顯示,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下2013-08-08JS循環(huán)遍歷ul中l(wèi)i的點(diǎn)擊事件給選中l(wèi)i添加css樣式(示例代碼)
對(duì)于一個(gè)ul中固定的li個(gè)數(shù),當(dāng)點(diǎn)擊其中一個(gè)li時(shí),改變選中l(wèi)i的顏色;同時(shí)改變對(duì)應(yīng)的另一個(gè)ul中l(wèi)i的顏色,怎么實(shí)現(xiàn)這個(gè)功能呢,下面小編給大家?guī)?lái)了js循環(huán)遍歷ul中l(wèi)i的點(diǎn)擊事件,給給選中l(wèi)i添加css樣式,感興趣的朋友一起看看吧2023-07-07