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

如何在Switch语句中对同一输出应用多个参数?

解决Switch语句中同时应用多种样式的问题

当前函数仅支持单个样式字符串参数,无法处理数组形式的多样式需求。可以通过以下两种方式改造函数,同时兼容单样式和多样式的场景:

方案1:基于样式映射对象 + 遍历处理

把每种样式对应的处理函数存入对象,统一处理单样式和多样式参数,扩展性更强:

function caseStyle(string, style) {
  // 定义样式与处理函数的映射关系
  const styleHandlers = {
    upper: str => str.toUpperCase(),
    reversed: str => str.split("").reverse().join("")
  };

  // 统一将样式转为数组,兼容单个字符串的情况
  const styles = Array.isArray(style) ? style : [style];
  
  // 遍历所有样式,依次应用处理逻辑
  styles.forEach(styleType => {
    if (styleHandlers[styleType]) {
      string = styleHandlers[styleType](string);
    }
  });

  return string;
}

// 测试用例
console.log(caseStyle("hello", "upper")); // 输出: HELLO
console.log(caseStyle("hello", "reversed")); // 输出: olleh
console.log(caseStyle("hello", ["upper", "reversed"])); // 输出: OLLEH
console.log(caseStyle("hello", ["reversed", "upper"])); // 输出: OLLEH

改动说明

  • 用对象映射替代switch语句,后续新增样式只需添加键值对,无需修改分支逻辑
  • 通过Array.isArray统一参数格式,避免重复编写单/多样式的处理逻辑
  • 遍历前检查处理函数是否存在,避免无效样式导致的错误

方案2:保留Switch语句的兼容改造

如果想继续使用switch语句,可通过遍历样式数组实现多样式叠加:

function caseStyle(string, style) {
  function toUpper(str) {
    return str.toUpperCase();
  }

  function toReversed(str) {
    return str.split("").reverse().join("");
  }

  // 统一将样式转为数组
  const styles = Array.isArray(style) ? style : [style];
  
  // 遍历样式数组,逐个执行switch分支
  for (const styleType of styles) {
    switch (styleType) {
      case "upper":
        string = toUpper(string);
        break;
      case "reversed":
        string = toReversed(string);
        break;
      // 可在此处添加更多样式分支
    }
  }

  return string;
}

// 测试用例
console.log(caseStyle("hello", ["upper", "reversed"])); // 输出: OLLEH

改动说明

  • 先统一参数格式为数组,确保遍历逻辑一致
  • 用for...of循环遍历样式,在循环内执行switch分支,实现多样式依次应用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:45:23