You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lodash中_.ary函数的作用是什么?有无更简便替代写法?

Lodash _.ary 函数作用及替代写法解析

一、_.ary 的核心作用

_.ary(func, n) 是用来限制目标函数接收的参数数量的工具函数:它会返回一个新函数,这个新函数在调用时只会把前 n 个参数传给原函数,自动忽略后续多余的参数。

二、官方示例的原理

官方给出的示例:

_.map(['6', '8', '10'], _.ary(parseInt, 1));

之所以需要用 _.ary,是因为数组的 map 方法会给回调函数传入三个参数:当前元素值、当前索引、原数组本身。而 parseInt 的第二个参数是进制数(radix),如果直接把 parseInt 传给 map:

['6', '8', '10'].map(parseInt);

会得到错误结果:

[6, NaN, 2]

原因是:

  • 第一个元素:parseInt('6', 0) → 进制0默认使用十进制,结果6
  • 第二个元素:parseInt('8', 1) → 进制1不存在,返回NaN
  • 第三个元素:parseInt('10', 2) → 二进制转十进制,结果2

用 _.ary(parseInt, 1) 后,强制 parseInt 只接收第一个参数(元素值),忽略后续的索引和数组,最终得到正确的 [6, 8, 10]。

三、关于箭头函数的替代写法

你提到的不依赖Lodash的写法:

['6', '8', '10'].map(x => parseInt(x))

确实能达到同样的效果,而且写法更简便、不需要额外依赖库。

因为箭头函数只显式传递了第一个参数 x 给 parseInt,此时 parseInt 的第二个参数(radix)未被传入,会默认使用十进制解析,所以能得到正确结果。


内容的提问来源于stack exchange,提问作者Daniel Schilling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:33:26