日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lodash常用用法总结

發(fā)布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lodash常用用法总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Lodash是一個輕量級的JavaScript工具函數(shù)庫,它方便了日常開發(fā)中對數(shù)據(jù)的操作,提高了開發(fā)效率。

? 日常開發(fā)中,通常會對數(shù)據(jù),特別是數(shù)組和對象進行各種讀寫等操作:比如去重,拷貝,合并,過濾,求交集,求和等等。根據(jù)平時開發(fā)中對數(shù)據(jù)的操作,我對Lodash常見的用法做了以下總結(jié),方便今后的學(xué)習(xí)和整理。

Array

Create

  • 創(chuàng)建一個數(shù)組,元素為0, 1, 2, ... , 23

    _.range([start=0], end, [step=1]) let arr = _.range(24)console.log(arr) // [0, 1, 2, 3, ... , 23]
  • 創(chuàng)建一個數(shù)組,元素為100, 100, 100, 100, 100

    _.fill(array, value, [start=0], [end=array.length]) let arr = _.fill(Array(5), 100)console.log(arr) // [100, 100, 100, 100, 100]

Read

  • 獲取數(shù)組中最后一個元素

    _.last(array) let arr = [1, 2, 3, 4, 5] let lastElement = _.last(arr) console.log(lastElement) // 5
  • 獲取數(shù)組中倒數(shù)第二個元素

    _.nth(array, [n=0]) let arr = [1, 2, 3, 4, 5] let lastSecondElement = _.nth(-2) console.log(lastSecondElement) // 4
  • 獲取對象數(shù)組中某一同名屬性的屬性值集合

    _.map(collection, [iteratee=_.identity]) let users = [{id: 12,name: 'Adam',hobbies: [{name: 'running', index: 100},{name: 'cycling', index: 95}]},{id: 14,name: 'Bob',hobbies: [{name: 'movie', index: 98},{name: 'music', index: 85}]},{id: 16,name: 'Charlie',hobbies: [{name: 'travelling', index: 90},{name: 'fishing', index: 88}]},{id: 18,name: 'David',hobbies: [{name: 'walking', index: 99},{name: 'football', index: 85}] } ] let userIds = _.map(users, 'id') let mostFavouriteHobbies = _.map(users, 'hobbies[0].name')console.log(userIds) // [12, 14, 16, 18] console.log(mostFavouriteHobbies) // ["running", "movie", "travelling", "walking"]
  • 獲取對象數(shù)組中某一屬性值最大的對象

    _.maxBy(array, [iteratee=_.identity]) let arr = [{a:1, b: 2, c: {d:4}}, {a:3, b: 4, c: {d:6}}] let maxBObj = _.maxBy(arr, 'b')console.log(maxBObj) // {a: 3, b: 4, c: {d: 6}}
  • 找出兩個數(shù)組中元素值相同的元素

    _.intersection([arrays]) let arr1 = [2, 1, {a: 1, b: 2}] let arr2 = [2, 3, {a: 1, b: 2}] let intersection = _.intersection(arr1, arr2) console.log(intersection) // [2]
  • 求數(shù)值數(shù)組中元素值的平均數(shù)

    _.mean(array) let numbers = [1, 2, 3, 4, 5] let average = _.mean(numbers)console.log(average) // 3
  • 求對象數(shù)組中某個屬性值的平均數(shù)

    _.meanBy(array, [iteratee=_.identity]) let objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }] let average = _.meanBy(objects, 'n')console.log(average) // 5
  • 獲取數(shù)組中前n個元素,不改變原數(shù)組

    _.take(array, [n=1]) let arr = [1, 2, 3, 4, 5] let part1Arr = _.take(arr, 4) let part2Arr = _.take(arr, 6) let part3Arr = _.take([], 5)console.log(part1Arr) // [1, 2, 3, 4] console.log(part2Arr) // [1, 2, 3, 4, 5] console.log(part3Arr) // []

Delete

  • 刪除數(shù)組中值為falsy的元素

    _.compact(array) let arr = [0, 1, false, 2, '', 3, null, undefined, NaN] let truthyArr = _.compact(arr) console.log(truthyArr) // [1, 2, 3]

Format

  • 去重。

    _.uniq(array) let arr = [2, 1, 2, '2', true] let uniqArr = _.uniq(arr)console.log(uniqArr) // [2, 1, '2', true]
  • 排序。對象數(shù)組,根據(jù)對象中的某個屬性的值,升序或降序排序

    _.orderBy(collection, [iteratees=[_.identity]], [orders]) let users = [{user: 'Tom', age: 25},{user: 'Amy', age: 23},{user: 'Perter', age: 22},{user: 'Ben', age: 29} ] let sortedUsers = _.orderBy(users, 'age', 'desc')console.log(sortedUsers) // [{user: "Ben", age: 29}, {user: "Tom", age: 25}, {user: "Amy", age: 23}, {user: "Perter", age: 22}]
  • 分割數(shù)組[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]為 [1, 2, 3, 4, 5] 和 [6, 7, 8, 9, 10]

    _.chunk(array, [size=1]) let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] let [left, right] = _.chunk(arr, 5)console.log(left) // [1, 2, 3, 4, 5] console.log(right) // [6, 7, 8, 9, 10]
  • 脫掉一層[]

    _.flatten(array) let address = {'江蘇省': ['南京市', '蘇州市'],'浙江省': ['杭州市', '紹興市'] } let cities = _.flatten(_.values(address))console.log(cities) // ["南京市", "蘇州市", "杭州市", "紹興市"]
  • 將多維數(shù)組轉(zhuǎn)為一維數(shù)組

    _.flattenDeep(array) let flattenedArr = _.flattenDeep([1, [2, [3, [4]], 5]]);console.log(flattenedArr) // [1, 2, 3, 4, 5]

Object

Create

  • 通過數(shù)組["x", "y"] 和 數(shù)組[10, 10] 創(chuàng)建對象 {x: 10, y: 10}

    _.zipObject([props=[]], [values=[]]) let keys = ["x", "y"] let values = [10, 10] let obj = _.zipObject(keys, values) console.log(obj) // {x: 10, y: 10}
  • 合并對象

    _.assign(object, [sources]) let desObj = {name: '', gender: 'male', job: 'developer'} let sourceObj = {name: 'Tom', job: ''} let mergedObj = _.assign(desObj, sourceObj)console.log(mergedObj) // {name: "Tom", gender: "male", job: ""}
  • 深拷貝對象

    _.cloneDeep(value) let sourceObj = {department_id: 1, permissions: {management: [1, 2, 3, 4], store: [11, 12, 13, 14]}} let desObj = _.cloneDeep(sourceObj) desObj.permissions.store.push(15, 16)console.log(desObj) // {department_id: 1, permissions: {management: [1, 2, 3, 4], store: [11, 12, 13, 14, 15, 16]}} console.log(sourceObj) // {department_id: 1, permissions: {management: [1, 2, 3, 4], store: [11, 12, 13, 14]}}
  • 合并多個對象中key值相同的鍵值對

    _.merge(object, [sources]) let obj1 = {'9': {name: '樂購超市'}} let obj2 = {'9': {storeToken: 'xxx'}} let obj3 = {'9': {storePosition: 'Hangzhou'}} let mergedObj = _.merge(obj1, obj2, obj3) console.log(mergedObj) // 9: {name: "樂購超市", storeToken: "xxx", storePosition: "Hangzhou"}

Read

  • 判斷對象中是否有某個屬性

    _.has(object, path) let obj = {a: [{b: {c: 3}}]} let hasC = _.has(obj, 'a[0].b.c')console.log(hasC) // true
  • 獲取對象中的某個屬性的值

    _.get(object, path, [defaultValue]) let obj = {a: [{b: {c: 3}}]} let c = _.get(obj, 'a[0].b.c')console.log(c) // 3

Update

  • 設(shè)置對象中的某個屬性的值

    _.set(object, path, value) let obj = {a: [{b: {c: 3}}]} let newObj = _.set(obj, 'a[0].b.c', 4);console.log(obj.a[0].b.c); // 4
  • 對多個對象相同屬性的屬性值求和。

    let customers = {new_customer: {0: 33, 1: 5, ... , 23: 0},old_customer: {0: 22, 1: 7, ... , 24: 0} } let customer = {} let keys = _.keys(customers.new_customer) let values = _.values(customers) _.map(keys, key => {customer[key] = _.sumBy(values, key) })customers.customer = customerconsole.log(customers) // console {customer: {0: 55, 1: 12, ... , 23: 0}new_customer: {0: 33, 1: 5, ... , 23: 0}old_customer: {0: 22, 1: 7, ... , 23: 0} }

Number

  • 生成一個隨機數(shù),范圍n~m

    _.random([lower=0], [upper=1], [floating]) let random1 = _.random(2, 5) let random2 = _.random(5)console.log(random1) // 2, 3, 4, 5 console.log(random2) // 0, 1, 2, 3, 4, 5

Data Type

  • 判斷數(shù)據(jù)類型

    _.isNumber(value)

    _.isInteger(value)

    ...

    _.isPlainObject(value)

    let variable = 'hello'; // Number console.log(_.isNumber(variable)); // Integer console.log(_.isInteger(variable)); // Boolean console.log(_.isBoolean(variable)); // String console.log(_.isString(variable)); // Null console.log(_.isNull(variable)); // Undefined console.log(_.isUndefined(variable)); // Array console.log(_.isArray(variable)); // Function console.log(_.isFunction(variable)); // Object console.log(_.isPlainObject(variable)); // Date console.log(_.isDate(variable));// DOM element console.log(_.isElement(variable));
  • 數(shù)據(jù)類型轉(zhuǎn)換

    • _.toArray

      _.toArray('abc') // ["a", "b", "c"]
    • _.toInteger

      _.toInteger(3.2); // 3 _.toInteger('3.2'); // 3
    • _.toNumber

      _.toNumber('3.2') // 3.2
    • _.toString

      _.toString(1); // "1" _.toString([1, 2, 3]); // "1,2,3"

Util

  • 重復(fù)多次某個元素

    _.times(n, [iteratee=_.identity]) const dateParams = _.times(2, () => '2018-08-27'); console.log(dateParams) // ["2018-08-27", "2018-08-27"]

總結(jié)

以上是生活随笔為你收集整理的Lodash常用用法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。