数组和对象的处理!,

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"
        },
    }
}

    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)

【以下回答由 GPT 生成】

我希望将数组 arr 和对象 obj 进行一些处理:

  1. 对于数组 arr,我希望根据 "topicSm" 的值对其进行分组,并统计每个分组中 "vot" 是 "Yes" 和 "No" 的数量。

  2. 对于对象 obj,我希望根据其结构中的属性和值的关系,更新 "value" 的值。具体来说,对于每个 topicSummaryList_x,我想找到 topicSm_x 的值,并更新其下的 topic1_xtopic2_x 中的 "value" 值为 arr 中相应分组的 "Yes" 和 "No" 的数量。

我的代码实现如下所示:


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632