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

如何根据对象内部Topics数组的重复值重构任务对象数组

实现方案

以下是JavaScript版本的实现逻辑,代码可直接运行得到预期结果:

// 原始任务数组
const originTasks = [
    { id: 54321, Task: 'Task 1', Topics: ["111", "222"]},
    { id: 667566, Task: 'Task 2', Topics: ["222"] },
    { id: 76889, Task: 'Task 3', Topics: ["333"] },
];

// 临时映射对象,key为唯一topic名称,value为对应归集的id数组
const topicMap = {};

originTasks.forEach(task => {
  task.Topics.forEach(topic => {
    // 不存在该topic时先初始化空数组
    if (!topicMap[topic]) topicMap[topic] = [];
    // 写入当前任务id
    topicMap[topic].push(task.id);
  })
})

// 转换为要求的输出格式
const result = Object.entries(topicMap).map(([name, id]) => ({ name, id }));

console.log(result);

逻辑说明

  • 用对象作为临时存储天然保证key的唯一性,不需要额外处理topic重复的问题
  • 两层遍历分别处理每个任务、每个任务关联的topic,完成id归集
  • 最后将对象键值对转换为目标数组结构即可

如果存在同一个任务多次关联同一个topic、需要避免id重复的场景,可以在写入id时加判断:

if (!topicMap[topic].includes(task.id)) {
  topicMap[topic].push(task.id);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:06:02