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