欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝

 更新時(shí)間:2023年11月20日 14:24:11   作者:夜貓逐夢(mèng)  
Lodash?是一個(gè)?JavaScript?的工具庫(kù),它提供了一系列的函數(shù)來(lái)簡(jiǎn)化代碼編寫,本文主要為大家介紹了如何使用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 - 22H219045.3570
lodash4.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ú)刷新刪除微博效果代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)仿騰訊微博無(wú)刷新刪除微博效果代碼,涉及JavaScript實(shí)現(xiàn)Ajax無(wú)刷新刪除的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • JavaScript 獲得選中文本內(nèi)容的方法

    JavaScript 獲得選中文本內(nèi)容的方法

    今天希望實(shí)現(xiàn)一個(gè),直接在網(wǎng)頁(yè)上選中文本,點(diǎn)擊收藏夾的鏈接(javascript)即可彈出新窗口(類似“百度搜藏”和“QQ書簽”),新窗口中的文本框即顯示了選中的文本。
    2009-02-02
  • js使瀏覽器窗口最大化實(shí)現(xiàn)代碼(適用于IE)

    js使瀏覽器窗口最大化實(shí)現(xiàn)代碼(適用于IE)

    點(diǎn)擊最大化按鈕后,瀏覽器的內(nèi)容填充滿顯示器,瀏覽器窗口的邊框被擠出顯示器。而該js的最大化效果是瀏覽器的邊框在顯示器內(nèi)顯示,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下
    2013-08-08
  • 怎樣在CocosCreator中使用游戲手柄

    怎樣在CocosCreator中使用游戲手柄

    這篇文章主要介紹了怎樣使用CocosCreator的游戲手柄,每一個(gè)步驟都挺詳細(xì),資源可以隨便找一些,希望同學(xué)們看完,一定要試一下
    2021-04-04
  • 小程序自定義tabBar組件封裝

    小程序自定義tabBar組件封裝

    這篇文章主要為大家詳細(xì)介紹了小程序自定義tabBar組件封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • JS數(shù)組去重的常用方法總結(jié)

    JS數(shù)組去重的常用方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于js數(shù)組去重的常用方法,js數(shù)組去重是比較常見的數(shù)組操作方式之一,文中介紹了九種常用方法,需要的朋友可以參考下
    2023-10-10
  • javascript 跨域問題以及解決辦法

    javascript 跨域問題以及解決辦法

    這篇文章主要介紹了javascript 跨域問題以及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • js獲取ajax返回值代碼

    js獲取ajax返回值代碼

    這篇文章主要介紹了js如何獲取ajax的返回值,需要的朋友可以參考下
    2014-04-04
  • JS循環(huán)遍歷ul中l(wèi)i的點(diǎn)擊事件給選中l(wèi)i添加css樣式(示例代碼)

    JS循環(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
  • JS代碼實(shí)現(xiàn)電腦配置檢測(cè)功能

    JS代碼實(shí)現(xiàn)電腦配置檢測(cè)功能

    這篇文章主要介紹了JS代碼實(shí)現(xiàn)電腦配置檢測(cè)功能,需要的朋友可以參考下
    2018-03-03

最新評(píng)論