创建要添加的函数,以便 add(1,2)(3,...k)(1,2,3)...(n) 应将所有数字相加[重复]

2023-12-01

我一直在寻找一种创建“添加”功能的方法,以便:

add(1,2) //returns 1+2= 3
add(1)(2,3)(4) // returns 10
add(1)(2,3)(4)(5,6)(7,8,9) //returns 45

如果我知道我们拥有的参数数量,我就可以创建 add 方法,例如:

const add5 = a => b => c => d => e => a+b+c+d+e;

因此,如果我使用 add5(1)(2)(3)(4)(5),这将为我提供预期的输出。

但问题是如果我们必须返回“N”个参数的总和,如何解决这个问题。

TIA !


一般情况下这是不可能的,除非toString允许对调用结果进行强制转换add(或者除非事先知道调用次数):

function add(...next) {
  let count = 0;
  // return a callable function which, when coerced to a string,
  // returns the closure's `count`:
  function internalAdd(...next) {
    count += next.reduce((a, b) => a + b, 0);
    return internalAdd;
  }
  internalAdd.toString = () => count;
  return internalAdd(...next);
}

console.log('' + add(1,2)) //returns 1+2= 3
console.log('' + add(1)(2,3)(4)) // returns 10
console.log('' + add(1)(2,3)(4)(5,6)(7,8,9)) //returns 45
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建要添加的函数,以便 add(1,2)(3,...k)(1,2,3)...(n) 应将所有数字相加[重复] 的相关文章

随机推荐