当前位置:首页 > JavaScript

sumif实现js

2026-01-31 13:08:05JavaScript

sumif实现js

实现 SUMIF 功能的 JavaScript 方法

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

sumif实现js

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)

高级实现支持多种条件

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

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
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选…