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

JavaScript按条件拼接分隔字符串 代码输出异常求修复方案

问题原因

你的原始代码没有先按人名聚合对应课程,而是边遍历边拼接字符串,逻辑漏洞导致同人名的课程拼接错位、末尾多余>符号。

修正后代码

let filterIds = ['1','2','3','4','5','6','7','8','9']
let filterDetails = [
    {
    id: 1,
    Name: 'David',
    Course: 'English'
    },
    {
    id: 2,
    Name: 'Peter',
    Course: 'German'
    },
    {
    id: 3,
    Name: 'Peter',
    Course: 'React'
    },
    {
    id: 4,
    Name: 'John',
    Course: 'English'
    },
    {
    id: 5,
    Name: 'John',
    Course: 'NodeJs'
    },
    {
    id: 6,
    Name: 'John',
    Course: 'Docker'
    },
    {
    id: 7,
    Name: 'Andrew',
    Course: 'Dutch'
    },
    {
    id: 8,
    Name: 'Andrew',
    Course: 'Angular'
    },
    {
    id: 9,
    Name: 'David',
    Course: 'SQL'
    }
]

// 先按顺序把id对应的条目捞出来
const sortedItems = filterIds.map(id => filterDetails.find(item => item.id == id))
// 按人名分组聚合课程
const nameGroup = {}
const nameOrder = [] // 保留人名出现的顺序
sortedItems.forEach(item => {
  if (!nameGroup[item.Name]) {
    nameGroup[item.Name] = []
    nameOrder.push(item.Name)
  }
  nameGroup[item.Name].push(item.Course)
})
// 拼接最终字符串
const result = nameOrder.map(name => nameGroup[name].join(',')).join(' > ')
console.log(result)

运行后输出的结果就是你期望的:

English > German,React > English,NodeJs,Docker > Dutch,Angular,SQL

如果一定要保留你原来的forEach遍历拼接的写法,也可以按下面调整:

let prevFilterName = ''
let filterCourse = ''
let filterIds = ['1','2','3','4','5','6','7','8','9']
let filterDetails = [/* 原有内容保持不变 */]

filterIds.forEach((id, index) => {
    let FindFilter = filterDetails.find((filterItem) => {return filterItem.id == id})
    if (prevFilterName === FindFilter.Name){
        // 同名人直接加逗号加课程
        filterCourse += ',' + FindFilter.Course
    } else {
        // 不同人名,除了第一个,前面要加 > 分隔
        if (index !== 0) {
            filterCourse += ' > '
        }
        filterCourse += FindFilter.Course
    }
    prevFilterName = FindFilter.Name
})
console.log(filterCourse)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:06:03