最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年11月20日 14:24:11   作者:夜貓逐夢  
Lodash?是一個(gè)?JavaScript?的工具庫,它提供了一系列的函數(shù)來簡化代碼編寫,本文主要為大家介紹了如何使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝,感興趣的小伙伴可以了解下

導(dǎo)讀

需求

爬蟲中經(jīng)常出現(xiàn)各種類型的命名,往往一個(gè)對象,幾十個(gè)字段的命名風(fēng)格都不是自己想要的,這時(shí)候就需要將整個(gè)對象自動(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 的工具庫,它提供了一系列的函數(shù)來簡化代碼編寫。Lodash 提供了很多功能,包括數(shù)組操作、對象操作、字符串操作等。

使用 Lodash 可以大大簡化代碼,提高代碼的可讀性和可維護(hù)性。它的函數(shù)提供了簡單且一致的接口,可以幫助開發(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庫函數(shù)測試
  console.log(_.camelCase('a_bc')) // aBc
  console.log(_.snakeCase('aBc')) // a_bc
  console.log(_.kebabCase('aBc')) // a-bc
}

與underscore比較

underscore 庫提供了一些實(shí)用的函數(shù),用于簡化 JavaScript 編程和提高開發(fā)效率。

underscore 內(nèi)置了多種實(shí)用的函數(shù),例如字符串操作、數(shù)組操作、對象操作、日期操作等等。這些函數(shù)都非常實(shí)用,可以在開發(fā)中大大簡化代碼,提高開發(fā)效率。

Underscore.js 和 Lodash.js 是 JavaScript 中開發(fā)人員使用最廣泛的兩個(gè)擴(kuò)展庫,它們主要用于簡化和增強(qiáng) JavaScript 代碼。它們的名字很相似,功能也相似,但它們也存在一些差異:

1.發(fā)行時(shí)間 Underscore.js 發(fā)行于 2010 年,是最早的 JavaScript 擴(kuò)展庫,而 Lodash.js 發(fā)行于 2012 年。

2.函數(shù)數(shù)量和功能 Underscore.js 和 Lodash.js 都提供了大量的函數(shù),以幫助開發(fā)人員處理常見的 JavaScript 操作。但 Lodash.js 比 Underscore.js 提供了更多的函數(shù)。總的來說,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ū)和支持方面看起來更為活躍。

實(shí)戰(zhàn):對象屬性名轉(zhuǎn)換

函數(shù)封裝

本節(jié)對snakeCase、camelCase、kebabCase進(jìn)行封裝,三個(gè)函數(shù)結(jié)構(gòu)類似,主要邏輯都是遍歷對象key,將key轉(zhuǎn)換后返回新的對象。

代碼如下:

/*
1. 轉(zhuǎn)換測試
2. 編寫函數(shù)
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轉(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,
}

單元測試

import _ from 'lodash'
import {camelCaseObject, snakeCaseObject, kebabCaseObject} from '../../js/object.js'

function test() {
  // 單元測試
  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é)

本章對lodash進(jìn)行了介紹,并對其中的轉(zhuǎn)換函數(shù)進(jìn)行了簡單的測試。

然后封裝了幾個(gè)函數(shù)用于工作中,節(jié)省人工,希望能對大家有所幫助。

以上就是JavaScript使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝的詳細(xì)內(nèi)容,更多關(guān)于JavaScript lodash命名轉(zhuǎn)換和封裝的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • js倒計(jì)時(shí)簡單實(shí)現(xiàn)方法

    js倒計(jì)時(shí)簡單實(shí)現(xiàn)方法

    這篇文章主要介紹了js倒計(jì)時(shí)簡單實(shí)現(xiàn)方法,方便一些提示重要日期的來臨,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 淺聊一下為什么能用RxJS取代Redux

    淺聊一下為什么能用RxJS取代Redux

    本文我們將和大家淺聊一下為什么能用RxJS取代Redux,RxJS 在現(xiàn)在的前端用比較少,但是 RxJS 作為響應(yīng)式和函數(shù)式編程的集大成者,似乎被前端開發(fā)者遺忘,可能是學(xué)習(xí)難度大,可能是有更加方便的解決方案,需要的朋友可以參考下
    2024-02-02
  • js實(shí)現(xiàn)隨機(jī)數(shù)字字母驗(yàn)證碼

    js實(shí)現(xiàn)隨機(jī)數(shù)字字母驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了js隨機(jī)驗(yàn)證碼的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 微信小程序 下拉列表的實(shí)現(xiàn)實(shí)例代碼

    微信小程序 下拉列表的實(shí)現(xiàn)實(shí)例代碼

    這篇文章主要介紹了微信小程序 下拉列表的實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • js星星評分效果

    js星星評分效果

    在這里和廣大腳本之家站的朋友們分享一個(gè)使用js實(shí)現(xiàn)商城星星評分的效果,希望能給大家點(diǎn)幫助
    2014-07-07
  • websocket直接繞過JS加密示例及思路原理

    websocket直接繞過JS加密示例及思路原理

    這篇文章主要為大家介紹了websocket直接繞過JS加密的示例及思路原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • 基于微信小程序?qū)崿F(xiàn)人臉數(shù)量檢測的開發(fā)步驟

    基于微信小程序?qū)崿F(xiàn)人臉數(shù)量檢測的開發(fā)步驟

    最近項(xiàng)目需求是統(tǒng)計(jì)當(dāng)前攝像頭中的人臉個(gè)數(shù),所以下面這篇文章主要給大家介紹了關(guān)于基于微信小程序?qū)崿F(xiàn)人臉數(shù)量檢測的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 小程序中監(jiān)聽頁面滾動(dòng)的幾種方法實(shí)例

    小程序中監(jiān)聽頁面滾動(dòng)的幾種方法實(shí)例

    這段時(shí)間接了一個(gè)微信小程序項(xiàng)目,從此打開小程序的新世界大門,下面這篇文章主要給大家介紹了關(guān)于小程序中監(jiān)聽頁面滾動(dòng)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • js簡單遍歷獲取對象中的屬性值的方法示例

    js簡單遍歷獲取對象中的屬性值的方法示例

    這篇文章主要介紹了js簡單遍歷獲取對象中的屬性值的方法,涉及javascript使用for循環(huán)遍歷json對象屬性值的簡單操作技巧,需要的朋友可以參考下
    2019-06-06
  • Javascript條件判斷使用小技巧總結(jié)

    Javascript條件判斷使用小技巧總結(jié)

    我們已經(jīng)知道,null?沒有任何的屬性值,并且無法獲取其實(shí)體(existence)值。所以?null.property?返回的是錯(cuò)誤(error)而不是?undefined?。
    2008-09-09

最新評論

嘉定区| 中卫市| 天峨县| 林甸县| 威海市| 万载县| 泗洪县| 霍州市| 聂荣县| 万州区| 仙桃市| 多伦县| 沅江市| 林西县| 普格县| 贺州市| 左云县| 巴青县| 伊金霍洛旗| 许昌市| 乐亭县| 昌乐县| 乐东| 筠连县| 抚顺市| 揭东县| 伊宁县| 通许县| 合山市| 呼图壁县| 九龙坡区| 油尖旺区| 通城县| 名山县| 大理市| 鸡东县| 平阴县| 罗田县| 长葛市| 泌阳县| 清新县|