当前位置:首页 > JavaScript

js实现sum方法

2026-03-15 18:32:20JavaScript

实现基础的数组求和

定义一个简单的sum函数,对数组元素进行求和。假设数组中的元素均为数字类型:

function sum(arr) {
  return arr.reduce((acc, current) => acc + current, 0);
}

处理非数字类型元素

扩展功能以处理包含非数字元素的数组,通过Number()进行类型转换:

function sum(arr) {
  return arr.reduce((acc, current) => acc + Number(current) || 0, 0);
}

支持多维数组求和

递归处理多维数组的情况,对嵌套数组进行展开求和:

function sum(arr) {
  return arr.reduce((acc, current) => {
    const value = Array.isArray(current) ? sum(current) : Number(current);
    return acc + (value || 0);
  }, 0);
}

添加参数校验

增加输入参数的类型检查,确保传入的是数组:

function sum(arr) {
  if (!Array.isArray(arr)) {
    throw new TypeError('Expected an array as input');
  }
  return arr.reduce((acc, current) => {
    const value = Array.isArray(current) ? sum(current) : Number(current);
    return acc + (value || 0);
  }, 0);
}

性能优化版本

针对大型数组进行优化,避免递归导致的堆栈溢出问题:

js实现sum方法

function sum(arr) {
  let total = 0;
  const stack = [...arr];

  while (stack.length) {
    const current = stack.pop();
    if (Array.isArray(current)) {
      stack.push(...current);
    } else {
      total += Number(current) || 0;
    }
  }

  return total;
}

标签: 方法js
分享给朋友:

相关文章

vue实现懒加载的方法

vue实现懒加载的方法

Vue 实现懒加载的方法 路由懒加载 通过动态导入语法拆分路由组件,减少初始加载时间。适用于 Vue Router 配置: const routes = [ { path: '/home…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…