和的参数

14 浏览
0 Comments

和的参数

朋友们,我需要帮助!

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

如果函数调用没有参数,则应返回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)    
};

我无法忽略那些无法转换为数字的数据类型的值,并将值转换为数字(如果可能的话)。

如果你能帮忙,我将非常感激。

0
0 Comments

问题的出现原因是在对数组求和的过程中,可能存在非数字元素。解决方法是使用`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

以上代码中,`sum`函数接受一个不定数量的参数,并使用扩展运算符将参数转换为数组。然后,使用`filter`方法过滤数组中的非数字元素,`Number`函数可以将非数字元素转换为`NaN`,因此可以用`filter(Number)`来过滤出数字元素。最后,使用`reduce`方法对过滤后的数组进行求和操作,初始值为0。

通过以上代码,可以得到正确的求和结果。例如,`console.log(sum(1, 2, 3, 4, 5, 6));`将输出21,表示1到6的数字之和。`console.log(sum(-10, 15, 100));`将输出105,表示-10、15和100的和。`console.log(sum());`将输出0,表示没有参数时的和为0。`console.log(sum(1, "fqwfqwf", {}, [], 3, 4, 2, true, false));`将输出11,因为在过滤后的数组中,true被转换为1,所以最终求和为11。

0
0 Comments

(Sum of arguments)问题的出现原因是需要对给定的参数进行求和,但是参数可能是任意类型,包括数字、字符串、对象等。为了解决这个问题,可以尝试对参数进行类型强制转换,将数组的每个元素转换为数字。如果转换成功,则进行求和,否则将其作为0处理。下面是一个解决方法的示例代码:

const sum = (...arr) => arr.reduce((a, i) => 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

这段代码通过使用reduce方法来对参数数组进行求和。在每一次迭代中,使用箭头函数对当前元素进行类型转换。如果转换成功,则将其加到累加器a上,否则将其作为0处理。最后,返回求和的结果。

希望这个回答对你有所帮助!如果是的话,请点赞并接受答案。感谢你的阅读和编辑!

0