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

如何按指定顺序从JS对象属性构建字符串并消除条件判断

优化姓名拼接逻辑的方案

问题背景

现有如下包含姓名信息的JavaScript对象(注:原对象中suffex为拼写错误,修正为suffix以匹配需求):

const info = {
  first: 'John',
  last: 'Doe',
  middle: 'Henry',
  suffix: 'Sr',
}

需要按照first、middle、last、suffix的固定顺序拼接成完整姓名字符串,期望结果为John Henry Doe Sr。当前实现使用带三元表达式的模板字符串,但希望移除其中的条件判断逻辑:

const name= `${info.first}${
  info.middle ? ' ' + info.middle : ''
} ${info.last}${info.suffix ? ' ' + info.suffix : ''}`

可行优化方案

方案一:数组过滤拼接法

把需要的字段按顺序放入数组,过滤掉无效值后用空格拼接,完全不需要条件判断:

const name = [
  info.first,
  info.middle,
  info.last,
  info.suffix
].filter(Boolean).join(' ');

原理:filter(Boolean)会自动剔除数组里的所有假值(包括undefined、null、空字符串),不管哪个字段不存在或为空,都会被自动跳过,不会在最终结果里多出空格。

方案二:解构赋值+数组处理

如果想要更清晰地看到用到的字段,可以先解构对象,再组成数组处理:

const { first, middle, last, suffix } = info;
const name = [first, middle, last, suffix].filter(Boolean).join(' ');

这种方式可读性更强,字段顺序一目了然。

特殊场景补充

如果你的业务里需要保留空字符串(这种情况很少见),可以把过滤逻辑改成精准判断未定义的属性:

const name = [
  info.first,
  info.middle,
  info.last,
  info.suffix
].filter(item => item !== undefined).join(' ');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:45:10