Lodash 工具函数速查表 - Lodash 常用方法与 JavaScript 工具库大全

这张速查给那些与其手写同样的循环、不如调用一个经过充分测试的函数的 JS 开发者。条目覆盖数组、对象、字符串、集合与函数工具,每条都给出能直接解决某个麻烦问题的调用,比如读取一个可能不存在的深层值、深拷贝以避免改到共享状态、或对输入框事件做防抖。与原生方法不同的是,Lodash 对 null/undefined 输入和边界情况更宽容。读完你应能针对去重、分组、防抖和深合并快速选对助手函数,知道哪些场景该用 Lodash 而不是手写。

编程语言·共 44 条命令·最后更新 2026-07-21
lodashjavascript工具库前端

数组 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]]])
把任意层嵌套一维化,[1, [2, [3]]] 变成 [1, 2, 3]
_.uniq([1, 2, 1, 3])
去掉重复项,保留首次出现的顺序,得到 [1, 2, 3]
_.union([1, 2], [2, 3])
合并多个数组并按唯一值去重,得到 [1, 2, 3]

对象 7

_.get(obj, "a.b.c", "default")
安全读取深层属性,即使 a 或 a.b 不存在也不抛错,找不到时回退到默认值
_.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")
按 age 值把数组分组成 { age值: [元素...] } 的对象
_.sortBy(users, ["age", "name"])
按给定的属性序列排序,先比 age 再比 name
_.countBy([1, 2, 2, 3], Math.floor)
按规则统计频次,得到每个取值出现的次数
_.keyBy(users, "id")
以 id 为键把数组转成对象,方便 O(1) 取用
_.sampleSize(arr, 2)
不放回地随机抽取 2 个元素,抽样调研常用
_.shuffle(arr)
Fisher–Yates 洗牌,返回顺序被打乱的新数组

函数 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()
空函数占位

提示

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

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们