楚河之界 2023-08-14 15:43 采纳率: 100%
浏览 5
已结题

数组和对象的处理!,

const arr = [
  {
    
    "createdBy": "rmc-cmt-mbr-2",
    "topicSm": "456",
    "vot": "Yes"
  },
  {
    
    "createdBy": "rmc-cmt-mbr-2",
    "topicSm": "123",
    "vot": "Yes"
  },
  {
    
    "createdBy": "rmc-cmt-mbr-1",
    "topicSm": "123",
    "vot": "Yes"
  },
  {
    
    "createdBy": "rmc-cmt-mbr-1",
    "topicSm": "456",
    "vot": "No"
  },
  {
    "createdBy": "rmc-cmt-mbr-6",
    "topicSm": "123",
    "vot": "No"
  },
  {
   
    "createdBy": "rmc-cmt-mbr-6",
    "topicSm": "456",
    "vot": "No"
  }
]

const obj = {
    "topicSummaryList_0": {
        "topicSm_0": {
            "name": "topicSm_0",
            "value": "456"
        },
        "topic1_0": {
            "name": "topic1_0",
            "label": "Yes",
            "value": ""
        },
        "topic2_0": {
            "name": "topic2_0",
            "label": "No",
            "value": ""
        },
    },
    "topicSummaryList_1": {
        "topicSm_1": {
            "name": "topicSm_1",
            "value": "123"
        },
        "topic1_1": {
            "name": "topic1_1",
            "label": "Yes",
            "value": ""
        },
        "topic2_1": {
            "name": "topic2_1",
            "label": "No",
            "value": ""
        },
    }
}

不要使用for in 方法,根据数组的topicSm和obj.topicSummaryList.topicSm.value对比,并且数组的vot和obj.topicSummaryList.topic1.label对比,对比相同的结果,把数组的createdBy值给到obj.topicSummaryList.topic1.value或者obj.topicSummaryList.topic2.value,期望得到以下结果

const newObj = {
    "topicSummaryList_0": {
        "topicSm_0": {
            "name": "topicSm_0",
            "value": "456"
        },
        "topic1_0": {
            "name": "topic1_0",
            "label": "Yes",
            "value": "rmc-cmt-mbr-2,"
        },
        "topic2_0": {
            "name": "topic2_0",
            "label": "No",
            "value": "rmc-cmt-mbr-1,rmc-cmt-mbr-6"
        },
    },
    "topicSummaryList_1": {
        "topicSm_1": {
            "name": "topicSm_1",
            "value": "123"
        },
        "topic1_1": {
            "name": "topic1_1",
            "label": "Yes",
            "value": "rmc-cmt-mbr-2,rmc-cmt-mbr-1"
        },
        "topic2_1": {
            "name": "topic2_1",
            "label": "No",
            "value": "rmc-cmt-mbr-6"
        },
    }
}
  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2023-08-14 16:35
    关注
    
        Object.keys(obj).forEach(k0 => {
            let keys = Object.keys(obj[k0]);
            var value = obj[k0][keys.filter(i => i.includes('topicSm_'))[0]].value;
            var items = arr.filter(i => i.topicSm == value);
    
            keys.filter(i => !i.includes('topicSm_')).forEach(i => {
                obj[k0][i].value = items.filter(x => x.vot == obj[k0][i].label).map(i => i.createdBy).join(',')
            })
        })
        console.log(obj)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月14日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集