Appearance
常用的 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')
// 3objToQString
将对象转换为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)