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

如何实现动态排序循环:将候选人按职位分类至对应数组

动态分类候选人到对应职位数组的优化方案

你的核心问题是硬编码了职位数组的索引判断,导致无法适配positionArr的动态变化(比如新增/删除职位)。下面是两种更简洁、动态的实现方式:

方案一:使用对象映射(推荐,可读性&效率更高)

先通过对象建立职位和对应候选人数组的映射,最后再转换成你需要的数组格式:

const positionArr = ["Chairman", "Secretary", "Organiser", "Finacial Secretary"];
const candidates = [
  { name: "Kwesi", position: "Finacial Secretary" },
  { name: "Kofi", position: "Chairman" },
  { name: "Ama", position: "Secretary" },
  { name: "Kwame", position: "Finacial Secretary" },
  { name: "Juliet", position: "Organiser" },
  { name: "Jese", position: "Chairman" },
];

const sortCandidates = () => {
  // 初始化职位-候选人映射对象
  const positionMap = positionArr.reduce((map, pos) => {
    map[pos] = [];
    return map;
  }, {});

  // 遍历候选人,分类到对应职位数组
  candidates.forEach(candidate => {
    if (positionMap.hasOwnProperty(candidate.position)) {
      positionMap[candidate.position].push(candidate);
    }
  });

  // 转换成和原需求一致的数组格式(按positionArr顺序排列)
  const varPositions = positionArr.map(pos => positionMap[pos]);
  console.log(varPositions);
};

sortCandidates();

方案二:利用数组索引动态匹配

直接基于positionArr的索引,动态找到候选人对应的子数组位置:

const positionArr = ["Chairman", "Secretary", "Organiser", "Finacial Secretary"];
const candidates = [
  { name: "Kwesi", position: "Finacial Secretary" },
  { name: "Kofi", position: "Chairman" },
  { name: "Ama", position: "Secretary" },
  { name: "Kwame", position: "Finacial Secretary" },
  { name: "Juliet", position: "Organiser" },
  { name: "Jese", position: "Chairman" },
];

const sortCandidates = () => {
  // 初始化对应职位的空数组
  const varPositions = positionArr.map(() => []);

  // 遍历候选人,找到对应职位的索引并添加
  candidates.forEach(candidate => {
    const posIndex = positionArr.indexOf(candidate.position);
    if (posIndex !== -1) { // 确保职位存在于positionArr中
      varPositions[posIndex].push(candidate);
    }
  });

  console.log(varPositions);
};

sortCandidates();

关键优化点:

  • 去掉了硬编码的索引判断,完全基于positionArr的内容动态处理,新增/删除职位无需修改代码
  • 减少了嵌套遍历,提升了代码效率
  • 增加了职位存在性判断,避免无效操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:35:49