亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript工具庫Lodash的使用方法詳解

 更新時(shí)間:2025年10月06日 10:06:11   作者:風(fēng)葉已鳴廊  
Lodash是一個(gè)可以提高開發(fā)者效率、提高原生JS方法性能的JavaScript第三方實(shí)用工具庫這篇文章主要介紹了JavaScript工具庫Lodash使用方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

Lodash是什么:

Lodash 是一個(gè)一致性、模塊化、高性能的 JavaScript 實(shí)用工具庫。Lodash 通過降低 array、number、objects、string 等等的使用難度從而讓 JavaScript 變得更簡(jiǎn)單。 Lodash 的模塊化方法 非常適用于:

  • 遍歷 array、object 和 string
  • 對(duì)值進(jìn)行操作和檢測(cè)
  • 創(chuàng)建符合功能的函數(shù)

Lodash的主要功能(用法請(qǐng)看使用示例):

數(shù)組操作(Array)

方法名功能描述
_.chunk將數(shù)組拆分為指定大小的塊
_.compact移除數(shù)組中的所有假值(false, null, 0, "", undefined, NaN)
_.concat連接多個(gè)數(shù)組/值
_.difference返回第一個(gè)數(shù)組中不包含在其他給定數(shù)組中的值
_.drop從數(shù)組開頭移除指定數(shù)量的元素
_.dropRight從數(shù)組末尾移除指定數(shù)量的元素
_.fill使用指定值填充數(shù)組的部分或全部元素
_.findIndex返回滿足條件的第一個(gè)元素的索引
_.flatten減少一級(jí)數(shù)組嵌套深度
_.flattenDeep遞歸將多維數(shù)組展平為一維數(shù)組
_.head獲取數(shù)組的第一個(gè)元素
_.indexOf獲取值在數(shù)組中的索引
_.intersection返回多個(gè)數(shù)組的交集元素
_.join將數(shù)組元素連接成字符串
_.last獲取數(shù)組的最后一個(gè)元素
_.pull移除數(shù)組中所有給定的值
_.reverse反轉(zhuǎn)數(shù)組
_.slice裁剪數(shù)組的一部分
_.sortedUniq對(duì)已排序數(shù)組進(jìn)行去重
_.tail獲取除第一個(gè)元素外的所有元素
_.take從數(shù)組開頭獲取指定數(shù)量的元素
_.union返回多個(gè)數(shù)組的并集(去重)
_.uniq數(shù)組去重
_.without創(chuàng)建排除指定值的新數(shù)組
_.zip將多個(gè)數(shù)組對(duì)應(yīng)位置的值分組

集合操作(Collection)

方法名功能描述
_.countBy根據(jù)轉(zhuǎn)換函數(shù)的結(jié)果統(tǒng)計(jì)元素?cái)?shù)量
_.each遍歷集合中的每個(gè)元素(別名:_.forEach
_.every檢查集合中所有元素是否滿足條件
_.filter篩選滿足條件的元素
_.find查找滿足條件的第一個(gè)元素
_.groupBy根據(jù)轉(zhuǎn)換函數(shù)的結(jié)果對(duì)元素分組
_.includes檢查值是否在集合中存在
_.keyBy根據(jù)指定鍵值創(chuàng)建對(duì)象
_.map對(duì)集合中每個(gè)元素執(zhí)行轉(zhuǎn)換函數(shù)
_.orderBy按指定屬性和排序方向?qū)吓判?/td>
_.partition將集合分為滿足條件和不滿足條件兩組
_.reduce將集合縮減為單個(gè)值
_.sample隨機(jī)獲取集合中的一個(gè)元素
_.shuffle打亂集合的順序
_.size獲取集合的長(zhǎng)度
_.some檢查集合中是否有元素滿足條件
_.sortBy按指定屬性升序排序

函數(shù)操作(Function)

方法名功能描述
_.after創(chuàng)建調(diào)用指定次數(shù)后才執(zhí)行的函數(shù)
_.bind綁定函數(shù)的this指向
_.curry創(chuàng)建柯里化函數(shù)
_.debounce創(chuàng)建防抖函數(shù)(延遲執(zhí)行)
_.delay延遲調(diào)用函數(shù)
_.flip翻轉(zhuǎn)函數(shù)參數(shù)的順序
_.memoize創(chuàng)建帶緩存的函數(shù)
_.once創(chuàng)建只能執(zhí)行一次的函數(shù)
_.partial部分應(yīng)用函數(shù)參數(shù)
_.throttle創(chuàng)建節(jié)流函數(shù)(限制執(zhí)行頻率)
_.unary創(chuàng)建只接受一個(gè)參數(shù)的函數(shù)

對(duì)象操作(Object)

方法名功能描述
_.assign復(fù)制源對(duì)象的可枚舉屬性到目標(biāo)對(duì)象(別名:_.extend
_.at根據(jù)路徑獲取對(duì)象的值
_.clone淺拷貝對(duì)象
_.cloneDeep深拷貝對(duì)象
_.defaults為對(duì)象設(shè)置默認(rèn)值
_.findKey查找滿足條件的第一個(gè)屬性鍵
_.forIn遍歷對(duì)象自身的和繼承的可枚舉屬性
_.forOwn遍歷對(duì)象自身的可枚舉屬性
_.get根據(jù)路徑安全獲取對(duì)象的值
_.has檢查對(duì)象是否有指定路徑的屬性
_.invert反轉(zhuǎn)對(duì)象的鍵值對(duì)
_.keys獲取對(duì)象自身的可枚舉屬性名
_.mapKeys通過函數(shù)映射對(duì)象的鍵名
_.mapValues通過函數(shù)映射對(duì)象的值
_.merge遞歸合并多個(gè)對(duì)象
_.omit排除對(duì)象中指定的屬性
_.pick選擇對(duì)象中指定的屬性
_.set根據(jù)路徑設(shè)置對(duì)象的值
_.toPairs將對(duì)象轉(zhuǎn)換為鍵值對(duì)數(shù)組(別名:_.entries
_.values獲取對(duì)象自身的可枚舉屬性值

實(shí)用工具(Util)

方法名功能描述
_.times調(diào)用函數(shù)指定次數(shù)并返回結(jié)果
_.random生成指定范圍內(nèi)的隨機(jī)數(shù)
_.range生成數(shù)字范圍數(shù)組
_.escape轉(zhuǎn)義字符串中的HTML特殊字符
_.noop空函數(shù)(返回undefined)
_.uniqueId生成全局唯一ID
_.camelCase將字符串轉(zhuǎn)換為駝峰式
_.capitalize將字符串首字母大寫
_.isEqual執(zhí)行深度比較判斷值是否相等
_.isFunction檢查值是否為函數(shù)
_.isObject檢查值是否為對(duì)象
_.isArray檢查值是否為數(shù)組
_.isEmpty檢查值是否為空(對(duì)象/集合/映射)
_.isString檢查值是否為字符串
_.isNumber檢查值是否為數(shù)字
_.isDate檢查值是否為Date對(duì)象
_.isError檢查值是否為Error對(duì)象
_.isNaN檢查值是否為NaN
_.isNil檢查值是否為null或undefined
_.isPlainObject檢查值是否為普通對(duì)象(通過{}或new Object創(chuàng)建)

字符串操作(String)

方法名功能描述
_.deburr去除字符串中的變音符號(hào)
_.endsWith檢查字符串是否以指定子串結(jié)尾
_.kebabCase將字符串轉(zhuǎn)換為短橫線分隔式
_.lowerCase將字符串轉(zhuǎn)換為空格分隔的小寫單詞
_.pad在字符串兩側(cè)填充字符到指定長(zhǎng)度
_.repeat重復(fù)字符串指定次數(shù)
_.replace替換字符串中匹配的子串
_.snakeCase將字符串轉(zhuǎn)換為下劃線分隔式
_.startCase將字符串轉(zhuǎn)換為每個(gè)單詞首字母大寫
_.startsWith檢查字符串是否以指定子串開頭
_.template創(chuàng)建模板字符串
_.toLower將字符串轉(zhuǎn)換為小寫
_.toUpper將字符串轉(zhuǎn)換為大寫
_.trim去除字符串兩端的空白字符
_.truncate截?cái)嘧址⑻砑邮÷蕴?hào)
_.unescape反轉(zhuǎn)義HTML特殊字符
_.words將字符串拆分為單詞數(shù)組

數(shù)學(xué)計(jì)算(Math)

方法名功能描述
_.add兩數(shù)相加
_.ceil向上取整
_.floor向下取整
_.max獲取數(shù)組中的最大值
_.mean計(jì)算數(shù)組的平均值
_.min獲取數(shù)組中的最小值
_.round四舍五入取整
_.sum計(jì)算數(shù)組值的總和

序列操作(Seq)

方法名功能描述
_.chain創(chuàng)建鏈?zhǔn)讲僮餍蛄?/td>
_.tap在鏈?zhǔn)讲僮髦袛r截值
_.thru在鏈?zhǔn)讲僮髦行薷闹?/td>
_.prototype.value執(zhí)行鏈?zhǔn)讲僮鞑⒎祷亟Y(jié)果

Lodash的安裝與使用:

npm安裝:

$ npm i --save lodash

項(xiàng)目中引入(二選一):

const _ = require('lodash');

import _ from 'lodash';

使用示例:

數(shù)組操作(Array)

// 分塊
_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a','b'], ['c','d']]

// 去假值
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]

// 深度扁平化
_.flattenDeep([1, [2, [3, [4]], 5]); // => [1, 2, 3, 4, 5]

// 差集
_.difference([2, 1], [2, 3]); // => [1]

// 去重
_.uniq([2, 1, 2]); // => [2, 1]

// 交集
_.intersection([2, 1], [2, 3]); // => [2]

集合操作(Collection)

const users = [
  { 'user': 'barney', 'age': 36 },
  { 'user': 'fred',   'age': 40 }
];

// 分組
_.groupBy(users, 'age'); // => { '36': [barney對(duì)象], '40': [fred對(duì)象] }

// 鍵值映射
_.keyBy(users, 'user'); // => { 'barney': barney對(duì)象, 'fred': fred對(duì)象 }

// 條件統(tǒng)計(jì)
_.countBy(users, user => user.age > 36); // => { 'false': 1, 'true': 1 }

// 多條件排序
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);

// 隨機(jī)取樣
_.sample([1, 2, 3, 4]); // => 隨機(jī)一個(gè)元素

函數(shù)操作(Function)

// 防抖(停止操作500ms后執(zhí)行)
const debounced = _.debounce(() => console.log('Resized!'), 500);
window.addEventListener('resize', debounced);

// 節(jié)流(每100ms最多執(zhí)行一次)
const throttled = _.throttle(() => console.log('Scrolling!'), 100);
window.addEventListener('scroll', throttled);

// 單次執(zhí)行
const init = _.once(() => console.log('Initialized!'));
init(); // => 'Initialized!'
init(); // 無效果

// 柯里化
const add = (a, b) => a + b;
const curried = _.curry(add);
curried(1)(2); // => 3

對(duì)象操作(Object)

const obj = { 'a': 1, 'b': 2 };
const nested = { 'a': { 'b': { 'c': 3 } } };

// 安全取值
_.get(nested, 'a.b.c'); // => 3
_.get(nested, 'a.b.d', 'default'); // => 'default'

// 排除屬性
_.omit(obj, ['a']); // => { 'b': 2 }

// 選擇屬性
_.pick(obj, ['b']); // => { 'b': 2 }

// 深度合并
_.merge({ 'a': 1 }, { 'b': 2 }); // => { 'a': 1, 'b': 2 }

// 深度克隆
const cloned = _.cloneDeep(nested);

實(shí)用工具(Util)

// 類型檢查
_.isArray([1, 2, 3]); // => true
_.isObject({}); // => true
_.isEmpty(null); // => true

// 范圍生成
_.range(4); // => [0, 1, 2, 3]

// 唯一ID
_.uniqueId('contact_'); // => 'contact_1'

// 深度比較
_.isEqual({ 'a': 1 }, { 'a': 1 }); // => true

// 執(zhí)行多次
_.times(3, () => console.log('Hello')); // 打印3次Hello

字符串操作(String)

// 駝峰轉(zhuǎn)換
_.camelCase('Foo Bar'); // => 'fooBar'

// 短橫線命名
_.kebabCase('fooBar'); // => 'foo-bar'

// 截?cái)辔谋?
_.truncate('hi-diddly-ho there', { 'length': 14 }); // => 'hi-diddly-ho...'

// 填充字符
_.pad('abc', 8, '_-'); // => '_-abc_-_'

// 首字母大寫
_.capitalize('FRED'); // => 'Fred'

數(shù)學(xué)計(jì)算(Math)

// 數(shù)組求和
_.sum([4, 2, 8, 6]); // => 20

// 最大值
_.max([4, 2, 8, 6]); // => 8

// 平均值
_.mean([4, 2, 8, 6]); // => 5

// 向上取整
_.ceil(4.006); // => 5

// 隨機(jī)數(shù)
_.random(5, 10); // => 5到10之間的整數(shù)

序列操作(Seq)

// 鏈?zhǔn)秸{(diào)用
const result = _.chain([1, 2, 3])
  .map(n => n * 2)
  .filter(n => n > 2)
  .value(); // => [4,6]

// 鏈?zhǔn)街虚g操作
_.chain([1, 2, 3])
  .tap(array => array.pop())
  .value(); // => [1,2]

日期處理

// 日期比較(需安裝lodash-date)
_.date.compare(new Date(2023, 0, 1), new Date(2023, 0, 2), 'day'); // => -1

總結(jié):

雖然現(xiàn)代JavaScript引入了許多新特性,但Lodash仍然具有不可替代的優(yōu)勢(shì):

  1. 穩(wěn)定性與可靠性:超過10年的開發(fā)迭代,處理了各種邊界情況

  2. 性能優(yōu)化:針對(duì)大型數(shù)據(jù)集的操作進(jìn)行了深度優(yōu)化

  3. 豐富功能:提供精心設(shè)計(jì)的實(shí)用函數(shù)

  4. 一致性API:所有函數(shù)保持一致的參數(shù)結(jié)構(gòu)和命名規(guī)范

無論是處理復(fù)雜的數(shù)據(jù)轉(zhuǎn)換、優(yōu)化應(yīng)用性能,還是簡(jiǎn)化日常開發(fā)任務(wù),Lodash都能提供優(yōu)雅而高效的解決方案。

到此這篇關(guān)于JavaScript工具庫Lodash使用方法詳解的文章就介紹到這了,更多相關(guān)js工具庫Lodash使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論