当前位置:首页 > JavaScript

sumif实现js

2026-01-31 13:08:05JavaScript

实现 SUMIF 功能的 JavaScript 方法

在 JavaScript 中,可以通过自定义函数模拟 Excel 的 SUMIF 功能。以下是一个实现示例:

function sumif(range, criteria, sumRange) {
  let sum = 0;
  for (let i = 0; i < range.length; i++) {
    if (typeof criteria === 'function') {
      if (criteria(range[i])) {
        sum += sumRange ? sumRange[i] : range[i];
      }
    } else {
      if (range[i] == criteria) {
        sum += sumRange ? sumRange[i] : range[i];
      }
    }
  }
  return sum;
}

使用示例

const data = [10, 20, 30, 40, 50];
const categories = ['A', 'B', 'A', 'C', 'B'];

// 简单条件求和
console.log(sumif(data, (val) => val > 30)); // 输出 90 (40+50)

// 带分类条件求和
console.log(sumif(categories, 'A', data)); // 输出 40 (10+30)

高级实现支持多种条件

对于更复杂的条件判断,可以扩展函数:

sumif实现js

function sumif(range, criteria, sumRange) {
  return range.reduce((sum, val, i) => {
    let match = false;

    if (typeof criteria === 'function') {
      match = criteria(val, i);
    } else if (typeof criteria === 'string') {
      // 支持比较运算符
      const operator = criteria.match(/^([<>]=?|==?)(.*)/);
      if (operator) {
        const op = operator[1];
        const num = parseFloat(operator[2]);
        match = eval(`${val} ${op} ${num}`);
      } else {
        match = val == criteria;
      }
    } else {
      match = val === criteria;
    }

    return match ? sum + (sumRange ? sumRange[i] : val) : sum;
  }, 0);
}

扩展用法示例

const sales = [100, 200, 150, 300, 250];
const regions = ['North', 'South', 'North', 'East', 'South'];

// 使用字符串条件
console.log(sumif(sales, '>150')); // 750 (200+300+250)

// 多条件组合
console.log(sumif(regions, 'North', sales)); // 250 (100+150)

这种方法提供了灵活的求和功能,可以根据需要调整条件判断逻辑。

标签: sumifjs
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 实现mvc

js 实现mvc

MVC 模式简介 MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)处理数据和业务逻辑,视图(View)负责展示数据,控制器(Con…

js实现递归

js实现递归

递归的基本概念 递归是一种通过函数调用自身来解决问题的方法。在JavaScript中,递归通常用于处理具有重复子问题或分治结构的数据,例如树形结构、阶乘计算等。 递归的实现要点 基线条件(Base…