Skip to content

常用的 lodash 函数

deepClone

深拷贝

Parameters:

  • obj: - 要深拷贝的值

Examples:

ts
let result = deepClone({ name: 'a', person: { age: 18, name: 'b', hobbies: ['sing', 'dance'] } })
// 历史原因 deepClone与CloneDeep 功能相同
let result1 = CloneDeep({ name: 'a', person: { age: 18, name: 'b', hobbies: ['sing', 'dance'] } })
// { name: 'a', person: { age: 18, name: 'b', hobbies: ['sing', 'dance'] } }

omit

删除对象中的某些键值对

Parameters:

  • obj: - 源对象
  • fields: - 需要删除的字段数组
  • ignoreEmpty: - 是否忽略 undefined | null

Examples:

ts
const obj = {
  a: 1,
  b: {
    c: 2,
    d: {
      e: 3,
    },
  },
  c: '',
  d: undefined,
}
const cloneObj = omit(obj, ['a'])
// { b: { c: 2, d: { e: 3 } }, c: '', d: undefined }

pick

从对象中取出指定的键值对

Parameters:

  • obj: - 源对象
  • keys: - 需要取出的键值对
  • ignoreEmpty: - 是否忽略 undefined | null

Examples:

ts
const obj = {
  a: 1,
  b: {
    c: 2,
    d: {
      e: 3,
    },
  },
}
const cloneObj = pick(obj, ['b'])
// { b: { c: 2, d: { e: 3 } } }

pickBy

从对象中取出指定的键值对,第二个参数 predicate(断言函数)

Parameters:

  • obj: - 源对象
  • predicate: - 断言函数,判断为真值的属性会被返回

Examples:

ts
const obj = {
  a: 1,
  b: {
    c: 2,
    d: {
      e: 3,
    },
  },
  c: '',
  d: undefined,
}
const cloneObj = pickBy(obj, (value) => !!value)
// { a: 1, b: { c: 2, d: { e: 3 } }}

omitBy

从对象中去除属性,通过第二个参数 predicate(断言函数)

Parameters:

  • obj: - 源对象
  • predicate: - 断言函数,判断为真值的属性会被去除

Examples:

ts
const obj = {
  a: 1,
  b: {
    c: 2,
    d: {
      e: 3,
    },
  },
  c: '',
  d: undefined,
}
const cloneObj = omitBy(obj, (value) => !value)
// { a: 1, b: { c: 2, d: { e: 3 } } }

debounce

防抖函数

Parameters:

  • fn: - 需要防抖的函数
  • delay: - 防抖的时间 (单位:毫秒)

Examples:

ts
let handleSearch = () => {}
const debounceSearch = debounce(handleSearch, 300)

throttle

节流函数

Parameters:

  • fn: - 需要节流的函数
  • delay: - 节流的时间 (单位:毫秒)

Examples:

ts
let handleSearch = () => {}
const throttleSearch = throttle(handleSearch, 300)

merge

合并对象

Parameters:

  • target: - 目标对象
  • source: - 源对象

Examples:

ts
let target = { a: 1, b: { c: 2 } }
let source = { b: { d: 3 } }
let result = merge(target, source)
// { a: 1, b: { c: 2, d: 3 } }

uniqueId

生成当前浏览器唯一 id

Parameters:

  • length: -随机数长度 默认 16

Examples:

ts
let uid11 = uniqueId(11) //11位
let uid16 = uniqueId() //16位
let uid19 = uniqueId(19) //19 位
let uid32 = uniqueId(32)

blobToBase64

将 Blob 对象转换为 base64 字符串

Parameters:

  • blob: - Blob 对象
  • ignorePrefix: - 是否忽略 dateUrl 前缀

Examples:

ts
let base64 = blobToBase64(blob)
let base64 = blobToBase64(blob, false)

get

从对象中获取指定路径的值

Parameters:

  • object: -对象
  • path: - 指定路径

Examples:

ts
const obj = {
  a: { b: { c: 3 } },
}
const value = get(obj, 'a.b.c')
// 3

objToQString

将对象转换为url字符串(支持多层对象)
useSearchParams在移动端兼容性不是很好

Parameters:

  • obj: -对象

Examples:

ts
const obj = {
  a: 1,
  b: 2,
}
// a=1&b=2
const queryString = objToQString(obj)

//多层对象
const obj1 = {
  a: 1,
  b: { c: 2 },
}
// a=1&b=%7B%22c%22%3A2%7D
const queryString = objToQString(obj1)

qStringToObj

将url字符串的参数转换为对象

Parameters:

  • queryString: -查询字符串

Examples:

ts
const queryString = 'http://xxx?a=1&b=2'
// { a: 1, b: 2 }
const obj = qStringToObj(queryString)

const qString = 'a=1&b=%7B%22c%22%3A2%7D'
// { a: 1, b: { c: 2 } }
const obj = qStringToObj(qString)