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

能否为三元运算符添加多条件?如何一行实现元音首字母a/an判断

一行代码实现三元运算符判断元音首字母选择"an"/"a"

你之前的写法逻辑有误:(careers[careersIndex].slice(0,1) === 'a' || 'A' || 'e' || 'i' || 'I' ? 'an' : 'a')里,||后面的'A'等非空字符串会被直接判定为true,所以不管首字母是什么,表达式都会返回true,导致永远输出"an"。

下面是两种可行的一行实现方案:

方案1:数组结合includes(直观易读)

把首字母转成小写后,判断是否在元音数组中:

${['a', 'e', 'i', 'o', 'u'].includes(careers[careersIndex].charAt(0).toLowerCase()) ? 'an' : 'a'}

方案2:正则表达式(更简洁)

用忽略大小写的正则匹配字符串开头的元音:

${/^[aeiou]/i.test(careers[careersIndex]) ? 'an' : 'a'}

修改后的完整代码

const containerEl = document.querySelector(".container");

const careers = [
"Youtuber",
"Web Designer",
"Frontend",
"Astronaut",
"Geek",
"armrest",
];

let careersIndex = 0;
let charIndex = 0;

updateText();

function updateText() {
charIndex++;
// 这里替换成上面的任意一种方案即可
containerEl.innerHTML = `<h1>I am

${/^[aeiou]/i.test(careers[careersIndex]) ? 'an' : 'a'}

${careers[careersIndex].slice(0, charIndex)}</h1>`;

if (charIndex === careers[careersIndex].length) {
careersIndex++;
charIndex = 0;
}
if (careersIndex === careers.length) {
careersIndex = 0;
}
setTimeout(updateText, 300);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:50:31