列表元素修改问题:API数据中重复人员的职位追加处理
解决方案
要实现重复人员追加职位的逻辑,核心是先定位到已存在的人员记录,再将当前职位合并到该记录中,以下是具体实现:
推荐方案(职位存为数组)
这种方式更便于后续对职位进行操作,建议统一用数组存储多职位:
if (workers.any((item) => item.id == person.id)) { // 定位到已存在的人员记录 const existingWorker = workers.find(item => item.id === person.id); // 避免重复添加相同职位(可选,根据需求决定是否保留) if (!existingWorker.jobTitles.includes(person.jobTitle)) { existingWorker.jobTitles.push(person.jobTitle); } } else { // 新增人员时,将单个职位包装为数组存入 workers.push({ ...coWorker, jobTitles: [coWorker.jobTitle] }); }
备选方案(职位用字符串拼接)
如果你的数据结构要求职位用字符串形式(比如逗号分隔),可以用以下写法:
if (workers.any((item) => item.id == person.id)) { const existingWorker = workers.find(item => item.id === person.id); // 避免重复拼接同一职位 if (!existingWorker.jobTitle.includes(person.jobTitle)) { existingWorker.jobTitle += `, ${person.jobTitle}`; } } else { workers.push(coWorker); }
说明
- 两种方案都通过
find方法匹配到已有人员对象 - 可选的重复判断可以防止同一职位被多次添加,若业务允许重复则可去掉该判断
- 数组存储方案更灵活,适合后续需要单独处理每个职位的场景
内容的提问来源于stack exchange,提问作者Ballazx
相关产品推荐
相关产品推荐

