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

使用Array.reduce按性别分组用户时输出未包含全部记录如何解决

问题原因

你写的reduce回调逻辑中,当首次匹配到某个性别的记录时,只完成了分组结构的初始化,没有将当前遍历到的这条记录加入对应分组的members数组,最终会导致每个性别的第一条记录全部丢失。

修正代码

只需要在else分支的初始化逻辑后,增加当前元素的入组操作即可:

console.log(JSON.stringify(inputArr.reduce((acc, ele) => {
  if (acc[ele.gender]) {
    acc[ele.gender].members.push(ele);
  } else {
    acc[ele.gender] = {
      members: []
    }
    // 新增:把当前首次匹配到的对应性别元素加入分组
    acc[ele.gender].members.push(ele);
  }
  return acc;
}, {})))

你也可以简化初始化逻辑,创建分组时直接把当前元素放入数组:

acc[ele.gender] = {
  members: [ele]
}

运行输出

修正后输出的内容会包含所有5条原始记录,结构如下:

{
  "MALE": {
    "members": [
      {"gender":"MALE","name":"A","age":20},
      {"gender":"MALE","name":"B","age":12},
      {"gender":"MALE","name":"D","age":21}
    ]
  },
  "FEMALE": {
    "members": [
      {"gender":"FEMALE","name":"C","age":16},
      {"gender":"FEMALE","name":"E","age":30}
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:15:04