参数总和[重复]
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以上是关于参数总和[重复]的主要内容,如果未能解决你的问题,请参考以下文章
声明数组变量/// 计算所有元素的总和/打印所有元素总和/输出/foreach循环/数组作为函数的参数/调用printArray方法打印