参数总和[重复]

Posted

技术标签:

【中文标题】参数总和[重复]【英文标题】:Sum of arguments [duplicate] 【发布时间】:2022-01-02 21:11:34 【问题描述】:

朋友们,我需要帮助!

我们需要实现 sum 函数,它接受无限数量的数字作为参数并返回它们的总和。

没有参数的函数调用应该返回 0。如果参数不是数字并且不能强制转换为数字,则应该忽略它。如果能化约为数,那就带上再加,就跟普通数一样。

使用示例:

console.log(
    sum(1, 2, 3, 4, 5, 6),
); // 21
console.log(
    sum(-10, 15, 100),
); // 105
console.log(
    sum(),
); // 0
console.log(
    sum(1, 'fqwfqwf', , [], 3, 4, 2, true, false),
); // 11. true = 1

我的尝试:

const sum = (...arr) => 
    return arr.reduce((a, i) => 
      if (isNaN(i)) return Number(i)
      return a +  Number(i)
    , 0)    
;

我不能忽略那些不能转为数字的数据类型的值,如果可能的话,把值转为数字。

如果你能帮忙,我将不胜感激

【问题讨论】:

【参考方案1】:

你可以filter数组和reduce

const sum = (...arr) => arr.filter(Number).reduce((a, c) => a + c, 0);

console.log(sum(1, 2, 3, 4, 5, 6)); // 21
console.log(sum(-10, 15, 100)); // 105
console.log(sum()); // 0
console.log(sum(1, "fqwfqwf", , [], 3, 4, 2, true, false)); // 11. true = 1

【讨论】:

【参考方案2】:

您可以尝试强制类型强制(将数组的项目转换为数字)。如果 JS 成功强制,则添加它,否则,回退到 0:

您也可以将其 one-liner 设为:

const sum = (...arr) => arr.reduce((a, i) => a + (+i || 0), 0);

const sum = (...arr) => 
  return arr.reduce((a, i) => 
    return a + (+i || 0);
  , 0);
;

console.log(sum(1, 2, 3, 4, 5, 6)); // 21
console.log(sum(-10, 15, 100)); // 105
console.log(sum()); // 0
console.log(sum(1, "fqwfqwf", , [], 3, 4, 2, true, false)); // 11. true = 1

【讨论】:

非常感谢我的朋友! @Art 如果对您有帮助,请点赞并接受答案:) [为无耻的插件道歉!] 感谢@decpk 编辑。 我做到了 :) 再次感谢@KanishkAnand 谢谢@decpk

以上是关于参数总和[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Tableau:创建参数以查看单个字段或总和

python中大量数字的总和产生最大参数

如何使用多个参数获取计数和总和以防万一

返回列表的总和:错误:参数的“类型”(列表)无效

声明数组变量/// 计算所有元素的总和/打印所有元素总和/输出/foreach循环/数组作为函数的参数/调用printArray方法打印

python 多重继承,继承的几个父类都需要传递参数,怎么在子类计算出父类传递的参数总和呢?