You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据数值范围从列表中返回首个匹配结果

问题概述

给定以下年龄分类规则表,需根据输入的年龄值,按表格从上到下的顺序返回第一个满足 Minimum ≤ 年龄 ≤ Maximum 的Category:

MinimumMaximumCategory
11111U
11313U
141514-15
161716-17
1820JR
1534SR
353935
404440
454945

示例:输入8返回11U,输入16返回16-17(而非后续的SR)。


实现方案

1. Python 实现

将规则按顺序存入列表,遍历判断年龄是否在当前区间,匹配到即返回对应分类:

def get_category(age):
    # 严格按表格顺序定义规则
    category_rules = [
        (1, 11, "11U"),
        (1, 13, "13U"),
        (14, 15, "14-15"),
        (16, 17, "16-17"),
        (18, 20, "JR"),
        (15, 34, "SR"),
        (35, 39, "35"),
        (40, 44, "40"),
        (45, 49, "45")
    ]
    
    for min_age, max_age, category in category_rules:
        if min_age <= age <= max_age:
            return category
    # 无匹配时返回None或自定义提示
    return None

# 测试用例
print(get_category(8))   # 输出: 11U
print(get_category(16))  # 输出: 16-17
print(get_category(25))  # 输出: SR

2. JavaScript 实现

同样按顺序遍历规则数组,找到第一个匹配项返回:

function getCategory(age) {
    const categoryRules = [
        { min: 1, max: 11, category: "11U" },
        { min: 1, max: 13, category: "13U" },
        { min: 14, max: 15, category: "14-15" },
        { min: 16, max: 17, category: "16-17" },
        { min: 18, max: 20, category: "JR" },
        { min: 15, max: 34, category: "SR" },
        { min: 35, max: 39, category: "35" },
        { min: 40, max: 44, category: "40" },
        { min: 45, max: 49, category: "45" }
    ];
    
    for (const rule of categoryRules) {
        if (age >= rule.min && age <= rule.max) {
            return rule.category;
        }
    }
    return null;
}

// 测试用例
console.log(getCategory(8));   // "11U"
console.log(getCategory(16));  // "16-17"

3. Excel 实现(适用于桌面表格工具)

如果需要在Excel中实现,可使用XLOOKUP(Excel 365/2021及以上):
假设年龄在A1单元格,规则表在D2:F10区域(D=Minimum,E=Maximum,F=Category):

=XLOOKUP(TRUE, (D$2:D$10<=A1)*(E$2:E$10>=A1), F$2:F$10, "无匹配", 0, 1)
  • 原理:生成布尔数组标记符合条件的行,XLOOKUP按顺序查找第一个TRUE对应的分类值。

旧版Excel可使用数组公式(输入后按Ctrl+Shift+Enter):

=INDEX(F$2:F$10, MATCH(TRUE, (D$2:D$10<=A1)*(E$2:E$10>=A1), 0))

内容的提问来源于stack exchange,提问作者Harlan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:31:22