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

如何为domainTypees函数正确应用JavaScript三元运算符?

如何用三元运算符改写域名类型判断的if-else逻辑?

嘿,我看到你在把那段if-else转换成三元运算符时踩坑了,咱们来拆解问题并搞定它~

首先得说你之前的三元写法有两个关键问题:

  • 你在三元表达式里直接用了return,这会在第一次循环时就直接终止函数,后面的域名根本没机会处理;
  • 三元运算符本质是表达式(用来返回一个值),不是执行语句的结构,你直接把push写在里面的用法不对。

正确的三元运算符改写方式

我们应该用三元运算符先算出当前域名对应的类型字符串,再把这个字符串push到数组里。具体写法如下:

function domainTypees(domains) { 
  const domainType = []; 
  for (let i = 0; i < domains.length; i++) { 
    const domain = domains[i].split("."); 
    const lastdomain = domain[domain.length - 1]; 
    // 用三元运算符获取对应的类型名称
    const typeName = lastdomain === "org" 
      ? "organization" 
      : lastdomain === "com" 
        ? "commercial" 
        : lastdomain === "net" 
          ? "network" 
          : lastdomain === "info" 
            ? "information" 
            : ""; // 可选:给未知后缀加个默认值,避免出现undefined
    domainType.push(typeName);
  } 
  return domainType; 
} 
console.log(domainTypees(["en.wiki.org", "codefights.com", "happy.net", "code.info"]));

额外推荐:更易读的多分支写法

其实对于这种多分支的键值映射场景,用对象映射比嵌套三元更清晰,维护起来也更方便,给你参考下:

function domainTypees(domains) { 
  const domainType = []; 
  // 先定义后缀和类型的映射关系
  const suffixMap = {
    org: "organization",
    com: "commercial",
    net: "network",
    info: "information"
  };
  for (let i = 0; i < domains.length; i++) { 
    const domain = domains[i].split("."); 
    const lastdomain = domain[domain.length - 1]; 
    // 直接从映射对象里取值,没有的话用默认值
    domainType.push(suffixMap[lastdomain] || "");
  } 
  return domainType; 
} 

这样不管以后要加多少新的后缀类型,只要在suffixMap里加键值对就行,比嵌套三元清爽多啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:07:50