当前位置:首页 > JavaScript

sumif实现js

2026-04-05 05:16:35JavaScript

sumif 函数的 JavaScript 实现

在 JavaScript 中实现类似 Excel 的 SUMIF 功能,可以通过自定义函数来完成。SUMIF 的基本逻辑是对满足特定条件的数值进行求和。

基本实现

以下是一个简单的 sumif 函数实现,接受数组、条件和可选的求和范围:

function sumif(range, criteria, sumRange) {
    let sum = 0;
    const useSumRange = sumRange && sumRange.length === range.length;

    for (let i = 0; i < range.length; i++) {
        if (checkCriteria(range[i], criteria)) {
            sum += useSumRange ? sumRange[i] : range[i];
        }
    }
    return sum;
}

function checkCriteria(value, criteria) {
    if (typeof criteria === 'function') {
        return criteria(value);
    }
    if (typeof criteria === 'string') {
        if (criteria.startsWith('>')) {
            return value > parseFloat(criteria.substring(1));
        }
        if (criteria.startsWith('<')) {
            return value < parseFloat(criteria.substring(1));
        }
        if (criteria.startsWith('=')) {
            return value == criteria.substring(1);
        }
        return value == criteria;
    }
    return value === criteria;
}

使用示例

const data = [10, 20, 30, 40, 50];
const sum1 = sumif(data, '>30'); // 90 (40 + 50)
const sum2 = sumif(data, (x) => x % 20 === 0); // 60 (20 + 40)

const items = ['Apple', 'Banana', 'Apple', 'Orange'];
const quantities = [5, 10, 8, 3];
const sum3 = sumif(items, 'Apple', quantities); // 13 (5 + 8)

高级功能实现

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

function checkCriteria(value, criteria) {
    if (criteria instanceof RegExp) {
        return criteria.test(value);
    }
    // 其他条件判断...
}

性能优化

对于大型数据集,可以考虑使用数组的 reduce 方法:

sumif实现js

function sumif(range, criteria, sumRange) {
    const useSumRange = sumRange && sumRange.length === range.length;
    return range.reduce((sum, val, i) => {
        return checkCriteria(val, criteria) 
            ? sum + (useSumRange ? sumRange[i] : val)
            : sum;
    }, 0);
}

这个实现提供了基本的 SUMIF 功能,并支持多种条件格式,包括字符串比较、数值比较和自定义函数判断。可以根据需要进一步扩展条件判断逻辑。

标签: sumifjs
分享给朋友:

相关文章

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现 功能

js实现 功能

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

js实现下拉菜单

js实现下拉菜单

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