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

如何在if语句中返回多个结果?及如何简化correctSize的范围判断逻辑

解决产品匹配逻辑的两个问题

问题1:获取所有符合条件的产品

原来的代码用了多个if+return的结构,一旦命中第一个条件就直接终止执行,自然拿不到后续符合条件的产品。要解决这个问题,我们需要收集所有匹配结果,而不是立即返回单个结果。

假设你是在遍历产品列表,推荐用filter方法来筛选所有符合条件的产品,调整后的逻辑如下:

// 示例:products是你的产品数组,每个产品包含key属性
const matchedProducts = products.filter(product => {
  const { key } = product;
  if ((correctSize === 3 || correctSize === 4) && key === "3kw") return true;
  if ((correctSize === 4 || correctSize === 5) && key === "4kw") return true;
  if ((correctSize === 5 || correctSize === 6) && key === "5kw") return true;
  if ((correctSize === 6 || correctSize === 7) && key === "6kw") return true;
  return false;
});

filter会遍历整个数组,保留所有符合任一条件的产品,不会中途终止。

如果需要先收集所有匹配的key再筛选产品,也可以用数组存储匹配项:

const matchedKeys = [];
if (correctSize === 3 || correctSize === 4) matchedKeys.push("3kw");
if (correctSize === 4 || correctSize === 5) matchedKeys.push("4kw");
if (correctSize === 5 || correctSize === 6) matchedKeys.push("5kw");
if (correctSize === 6 || correctSize === 7) matchedKeys.push("6kw");

// 用收集到的key筛选产品
const matchedProducts = products.filter(p => matchedKeys.includes(p.key));

问题2:简化correctSize的范围判断

针对correctSize处于4到6之间的判断,有两种简洁易懂的写法:

  1. 区间直接比较:适合连续数值的范围判断
// 判断correctSize在4-6之间(包含4和6)
if (correctSize >= 4 && correctSize <= 6) {
  // 执行对应逻辑
}
  1. 数组includes方法:适合离散整数的判断场景
if ([4, 5, 6].includes(correctSize)) {
  // 执行对应逻辑
}

进阶优化:用映射关系简化整体逻辑

如果后续需要频繁调整size范围或新增产品key,推荐把规则整理成映射数组,让代码更易维护:

// 定义size范围与产品key的映射关系
const sizeKeyRules = [
  { sizes: [3, 4], key: "3kw" },
  { sizes: [4, 5], key: "4kw" },
  { sizes: [5, 6], key: "5kw" },
  { sizes: [6, 7], key: "6kw" },
];

// 快速找到所有匹配的key
const matchedKeys = sizeKeyRules
  .filter(rule => rule.sizes.includes(correctSize))
  .map(rule => rule.key);

// 筛选产品
const matchedProducts = products.filter(p => matchedKeys.includes(p.key));

以后要修改规则时,只需要调整sizeKeyRules数组即可,不用改动判断逻辑,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:22:49