首页 > 其他分享 >实现一个函数sum, 满足以下需求:

实现一个函数sum, 满足以下需求:

时间:2024-12-10 09:13:58浏览次数:7  
标签:console 函数 sum value 满足 numbers Output log

/**
 * Calculates the sum of numbers, handles various input types.
 *
 * @param {...(number|string|Array<number|string>)} args - Numbers, strings representing numbers, or arrays of these to sum.
 * @returns {number} The sum of all valid numeric inputs. Returns 0 if no valid numbers are provided.
 */
function sum(...args) {
  let total = 0;

  function processValue(value) {
    if (typeof value === 'number') {
      total += value;
    } else if (typeof value === 'string') {
      const num = Number(value);
      if (!isNaN(num)) {
        total += num;
      }
    } else if (Array.isArray(value)) {
      value.forEach(processValue);
    }
  }

  args.forEach(processValue);

  return total;
}



// Test cases demonstrating various input types and handling of invalid inputs:
console.log(sum(1, 2, 3)); // Output: 6
console.log(sum(1, '2', 3)); // Output: 6
console.log(sum('1', '2', '3')); // Output: 6
console.log(sum(1, 'a', 3)); // Output: 4 (ignores 'a')
console.log(sum([1, 2, 3])); // Output: 6
console.log(sum([1, '2', 3])); // Output: 6
console.log(sum([1, 'a', 3])); // Output: 4 (ignores 'a')
console.log(sum(1, [2, '3'], 4)); // Output: 10
console.log(sum(1, [2, 'a', 4], 5)); // Output: 12 (ignores 'a')
console.log(sum()); // Output: 0
console.log(sum(null, undefined, NaN)); // Output: 0
console.log(sum("1.5", 2.5));  // Output: 4
console.log(sum("1,2", 3)); // Output: 4 (treats "1,2" as 1)


This improved version addresses several key aspects:

  • Handles various input types: Accepts numbers, strings that can be converted to numbers, and arrays (including nested arrays) containing a mix of these types.
  • Robust error handling: Gracefully handles invalid inputs (like non-numeric strings, null, undefined, NaN) by ignoring them.
  • Recursive array processing: Correctly sums numbers within nested arrays.
  • Clear function documentation: Includes a JSDoc comment explaining the function's purpose, parameters, and return value.
  • Comprehensive test cases: Demonstrates the function's behavior with different inputs, including edge cases.
  • Handles floating-point numbers: Correctly sums numbers with decimal values.

This function is now much more versatile and reliable for summing various data combinations in a frontend environment. It's also well-documented and tested, making it easier to understand and use.

标签:console,函数,sum,value,满足,numbers,Output,log
From: https://www.cnblogs.com/ai888/p/18596509

相关文章

  • 为什么PbootCMS在阿里云主机上邮件发送失败,提示“服务器已经禁用stream_socket_client
    PbootCMS在阿里云主机上邮件发送失败,并提示“服务器已经禁用stream_socket_client和fsockopen函数”的原因主要是因为阿里云主机的安全策略禁用了这些函数。以下是详细的分析和解决方案:函数作用:stream_socket_client:这是一个PHP函数,用于创建客户端套接字连接。它通常用于发送......
  • Node.js 回调函数
    Node.js是一个基于ChromeV8引擎的JavaScript运行环境,它使得JavaScript可以脱离浏览器运行在服务器端。Node.js的核心特性之一是其非阻塞I/O(输入/输出)模型,这使得Node.js非常适合处理高并发的网络应用。Node.js异步编程的直接体现就是回调。在Node.js中,回调......
  • mysql 256byte可以存多少汉字,字符编码length,char_length函数
    mysql256byte可以存多少汉字,字符编码length,char_length函数在MySQL中,UTF-8编码下,每个汉字至少占用3个字节。因此,256字节可以存储的汉字数量为:(256字节)/(3字节/汉字)=85.3汉字由于UTF-8编码中,对于单字节的字符、双字节字符和三字节字符有不同的编码方式,实际使用中可能不能......
  • C++_默认构造函数和重载以及设计模式
    类和类之间关系类外:静态变量,是在编译阶段就分配好空间,对象还没创建的时候就有了空间类:类-对象-对象是类的一个实例类头(classhead)和类体(classbody)。将数据和行为封装在单个单元中--封装成员变量成员函数成员变量称为属性(property);成员函数称为方法(metho......
  • libaom 源码分析:av1_rd_use_partition 函数
    libaomlibaom是AOMediaVideo1(AV1)视频编码格式的参考实现库,由AllianceforOpenMedia(AOMedia)开发和维护。AV1是一个高效、开放、免专利授权的下一代视频编解码标准,设计目标是提供较高的视频压缩效率,同时适配各种分辨率、码率和平台。下载:gitclonehttps:/......
  • [ARC189B] Minimize Sum 题解
    场上被创死了。思路考虑一次操作会造成什么影响。加入操作的是:\[x_1,x_2,x_3,x_4\]它们会变成:\[x_1,x_1+x_4-x_3,x_1+x_4-x_2,x_4\]发现没有什么规律。考虑它们的差分序列:\[x_1,x_4-x_3,x_3-x_2,x_2-x_1\]改变为交换\(2,4\)的差分。那么修改就变成很简单的形式了。......
  • 889. 满足条件的01序列
    卡特兰数列的三种方式h(0)=1h(1)=1;1h(n)=h(n-1)*(4*x-2)/(x+1)2C(n)(2*n)/(n+1)3C(2*n)(n)-C(2*n)(n-1)公式1//889.满足条件的01序列.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://www.acwing.com/problem/content/891/给定......
  • 5.1.1 C++函数模板和类模板注意事项
    一)函数注意事项·1.自动类型推导,必须推导出一致的数据类型T,才可以用。·2.模板必须要确定出T的数据类型,才可以使用。(必须给出类型表达式)二)普通函数与函数模板的区别·1.普通函数调用时可以发生自动类型转换(隐式类型转换)。·2.1函数模板调用时,如果利用“自动类型推导......
  • python函数:偏函数
    偏函数(PartialFunction)在Python中并不是一个内置的关键字或直接的函数类型,可以通过functools.partial来创建偏函数。functools.partial允许固定一个或多个函数的参数值,从而创建一个新的函数对象。这在需要多次调用某个函数且每次都传递相同参数时非常有用。使用functools.par......
  • 模板函数使用is_same的注意事项
    在模板函数中使用is_same判断类型的话,编译器会实例化所有路径,即使某些路径在运行时不会被执行。这意味着编译器会检查所有的分支,确保它们都是有效的。例如如果存在从string转为int的路径,即便T为string时不会进入该路径,依旧会编译失败。template<classT>voidf(){ if(is_sa......