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

JS数组拼接时如何将指定元素"Bye"固定放在拼接结果末尾

实现方案

基于现有过滤逻辑改造

你可以直接在原有filter(Boolean)的逻辑里新增判断,过滤掉"Bye"元素后统一追加到结果末尾,改动最小:

// 始终在末尾追加Bye的写法
const result = input
  .filter(item => Boolean(item) && item !== 'Bye')
  .concat('Bye')
  .join('@')

如果要求仅原数组存在"Bye"时才追加,可调整为:

let hasBye = false
const result = input
  .filter(item => {
    if (!Boolean(item)) return false
    if (item === 'Bye') {
      hasBye = true
      return false
    }
    return true
  })
  .concat(hasBye ? 'Bye' : [])
  .join('@')

这种写法用concat后再join,可以避免过滤后的数组为空时出现开头带@的异常,比直接拼接+ '@Bye'更稳妥。

最高效单遍历实现

如果处理的是大体积数组,推荐用reduce一次遍历完成所有逻辑,避免多次遍历数组,性能最优:

const { validList, byeList } = input.reduce((acc, curr) => {
  if (!curr) return acc
  if (curr === 'Bye') {
    acc.byeList.push(curr)
    return acc
  }
  acc.validList.push(curr)
  return acc
}, { validList: [], byeList: [] })

const result = validList.concat(byeList).join('@')

这种写法还兼容原数组存在多个"Bye"的场景,会把所有"Bye"都放到结果末尾。

验证结果

针对你给出的示例输入,上述所有方案的输出都和预期一致:
"Hi@Hello@Jose@Juan@How@Disco@Bye"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:03:03