Lodash Cheatsheet - Utility Functions
Lodash 现代 JavaScript 开发必备工具函数都在这里了,从数组操作到函数防抖节流,按类别分类整理,写代码时直接复制。
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" 可进一步减小体积。