当前位置:首页 > JavaScript

sumif实现js

2026-01-31 13:08:05JavaScript

sumif实现js

实现 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)

高级实现支持多种条件

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

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)

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

sumif实现js

标签: sumifjs
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…