Lodash Cheatsheet - Utility Functions

Lodash 现代 JavaScript 开发必备工具函数都在这里了,从数组操作到函数防抖节流,按类别分类整理,写代码时直接复制。

Languages·44 commands·Last updated 2026-07-21
Back to Languages

数组 7

_.map(arr, (n) => n * 2)
映射为新数组
_.filter(arr, (n) => n > 0)
过滤符合条件的元素
_.reduce(arr, (sum, n) => sum + n, 0)
归约累计
_.chunk(arr, 2)
每 2 个一组切分
_.flattenDeep([1, [2, [3]]])
深度扁平化
_.uniq([1, 2, 1, 3])
数组去重
_.union([1, 2], [2, 3])
多数组并集去重

对象 7

_.get(obj, "a.b.c", "default")
安全获取嵌套属性
_.set(obj, "a.b.c", value)
安全设置嵌套属性
_.pick(obj, ["name", "age"])
选取指定属性
_.omit(obj, ["password"])
排除指定属性
_.merge(target, source)
深度合并对象
_.cloneDeep(obj)
深拷贝
_.keys(obj) / _.values(obj)
取键名/键值数组

字符串 6

_.camelCase("Foo Bar")
转驼峰命名
_.kebabCase("FooBar")
转短横线命名
_.template("<%= name %>")({ name: "Vue" })
编译模板字符串
_.escape("<a>")
HTML 转义
_.trim(" abc ")
去除首尾空白
_.pad("abc", 8)
两端填充到指定长度

集合 6

_.groupBy(users, "age")
按属性分组
_.sortBy(users, ["age", "name"])
多属性排序
_.countBy([1, 2, 2, 3], Math.floor)
按规则计数
_.keyBy(users, "id")
按属性转为对象映射
_.sampleSize(arr, 2)
随机抽取 n 个元素
_.shuffle(arr)
随机打乱顺序

函数 6

_.debounce(fn, 300)
防抖(停止触发后才执行)
_.throttle(fn, 300)
节流(固定频率执行)
_.memoize(fn)
缓存函数结果
_.once(fn)
只执行一次
_.partial(fn, _, 2)
部分应用参数
_.bind(fn, thisArg, arg1)
绑定 this 与参数

数字与数学 5

_.random(0, 100)
生成 0-100 随机整数
_.range(0, 5)
生成 [0, 1, 2, 3, 4]
_.clamp(num, 0, 100)
限制在区间内
_.inRange(num, 0, 100)
判断是否在区间内
_.round(1.234, 2)
保留 2 位小数

实用判断 7

_.isEmpty(value)
判断是否为空
_.isEqual(a, b)
深度相等比较
_.isNil(value)
判断 null 或 undefined
_.isArray(value) / _.isObject(value)
类型判断
_.has(obj, "a.b")
判断是否有属性路径
_.defaults({ a: 1 }, { a: 0, b: 2 })
填充未定义属性
_.noop()
空函数占位

💡 Tips

  • lodash-es 是 ES Module 版本,支持 Tree Shaking,打包体积更小。
  • _.get 和 _.set 可以安全操作深层嵌套对象,避免 undefined 报错。
  • debounce 适合搜索输入框,throttle 适合滚动/resize 事件。
  • 现代 JS 可以用原生方法替代部分 Lodash,如 Array.prototype.flat()、Object.keys()。
  • 按需引入单个方法 import cloneDeep from "lodash/cloneDeep" 可进一步减小体积。