如何将JS用户数组按状态聚合为指定的文本格式?
问题分析与解决方法
你的现有代码问题在于:直接遍历每个用户对象,每次都单独输出一行状态: 用户名,没有对相同状态的用户名做聚合处理,所以会重复输出相同状态的行。
正确实现步骤:
- 先将用户数组按
status分组,把同一状态下的用户名收集到一个数组里 - 遍历分组后的结果,拼接成目标格式的文本
完整代码实现:
const user = [ { status: "busy", username: "admin1"}, { status: "busy", username: "admin2"}, { status: "busy", username: "admin3"}, { status: "sleep", username: "admin0"}, ] // 按状态分组 const groupedUsers = user.reduce((acc, current) => { if (!acc[current.status]) { acc[current.status] = [] } acc[current.status].push(current.username) return acc }, {}) // 生成目标文本 let text = `` for (const status in groupedUsers) { text += `${status}: ${groupedUsers[status].join(',')},\n` } console.log(text)
输出结果:
busy: admin1,admin2,admin3, sleep: admin0,
内容的提问来源于stack exchange,提问作者user20960698
相关产品推荐
相关产品推荐

