Skip to content

Latest commit

 

History

History
39 lines (26 loc) · 1.3 KB

ary.md

File metadata and controls

39 lines (26 loc) · 1.3 KB
标题 标签
ary(创建函数) function,advanced(函数,高级的)

创建一个最多接受n个参数的函数,忽略任何其他参数。

  • 使用Array.prototype.slice(0,n)和展开运算符...调用提供的函数fn(最多n个参数)。

代码如下:

const ary =
  (fn, n) =>
  (...args) =>
    fn(...args.slice(0, n));

ts 代码如下:

调用方式:

const firstTwoMax = ary(Math.max, 2);
// 这里不严谨,可查看ts代码段,'a'不能当作number传入,而这里只是截取前2个值,所以'a'会被忽略,如果比较前3个数,则结果是[NaN, 6, 10]
// 即可理解为,const firstThreeMax = ary(Math.max, 3); [[2, 6, 'a'], [6, 4, 8], [10]].map(x => firstThreeMax(...x));的结果
[[2, 6, 'a'], [6, 4, 8], [10]].map(x => firstTwoMax(...x)); // [6, 6, 10]

应用场景

以下是一个实战示例:

结果如下:

<iframe src="codes/javascript/html/ary.html"></iframe>