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

如何用JavaScript的reduce替代flat实现数组合并扁平化?

用reduce替代flat合并房间玩家列表

现有如下数据:

  • 房间名称数组:const rooms = ['roomA', 'roomB', 'roomC']
  • 房间玩家对象:
const roomOccupants = { 
  'roomA': [{name: 'player1'}, {name: 'player555'}], 
  'roomB': [{name: 'player2'}, {name: 'player3'}] 
}

如果用map配合flat可以实现合并,但你想用reduce替代flat直接得到一维玩家数组,代码实现如下:

实现代码

const roomABC = rooms.reduce((acc, room) => {
  // 处理不存在的房间,避免返回undefined
  const currentOccupants = roomOccupants[room] || [];
  // 将当前房间玩家合并到累加器数组
  return acc.concat(currentOccupants);
}, []);

结果验证

最终roomABC的输出就是期望的一维数组:

[{name: 'player1'}, {name: 'player555'}, {name: 'player2'}, {name: 'player3'}]

逻辑说明

  • reduce的初始值设为空数组[],作为累加器acc的起点
  • 遍历每个房间名时,先取出对应的玩家列表(没有则用空数组兜底)
  • 通过concat把当前房间的玩家数组合并到累加器中,每次迭代返回更新后的累加器
  • 遍历结束后,累加器就是所有存在的房间玩家合并后的一维数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:45