浪潮行舟 2022-09-12 10:48 采纳率: 50%
浏览 77
已结题

javascript处理数组去重时,结果老是有重复的,希望童鞋们帮一下

在处理合并数组时,利用两次for循环,然后if条件判断;结果老是有重复的
我的相关代码

项目详情数组 {项目名称、项目批次、项目批次是否变化、机构名称、线索编号、发现时间}
projectInfoList:[
{programName:测试项目1,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1,programNum:201109010011,findTime:2022-09-09},
{programName:测试项目1,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1,programNum:201109110013,findTime:2022-09-09},
{programName:测试项目1,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1,programNum:201109010014,findTime:2022-09-09},
{programName:测试项目2,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1,programNum:201109010015,findTime:2022-09-09},
{programName:测试项目2,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1,programNum:201109010016,findTime:2022-09-09},
{programName:测试项目3,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1,programNum:201109010012,findTime:2022-09-09},
{programName:测试项目3,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1,programNum:201109010017,findTime:2022-09-09},
{programName:测试项目3,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1,programNum:201109010018,findTime:2022-09-09}]

项目数组 {项目名称}
projectInfoList:[
{programName:测试项目1},
{programName:测试项目2},
{programName:测试项目3}]

项目批次数组 {项目名称、项目批次、是否发现变化、机构名称}
projectBatchList:[
{programName:测试项目1,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1},
{programName:测试项目1,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1},
{programName:测试项目2,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1},
{programName:测试项目2,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1},
{programName:测试项目3,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1},
{programName:测试项目3,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1}]

想要将上述项目详情数组进行去重,组成新数组:
1.从“项目详情数组”获取“项目数组”,希望组成新数组项目数组如下:

projectInfoList:[
{programName:测试项目1},
{programName:测试项目2},
{programName:测试项目3}]

2.从“项目详情数组”获取“项目批次数组”,希望组成新数组如下:
projectBatchList:[
{programName:测试项目1,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1},
{programName:测试项目1,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1},
{programName:测试项目2,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1},
{programName:测试项目2,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1},
{programName:测试项目3,projectBatch:项目批次1,isSXBH:1,organizationName:机构名称1},
{programName:测试项目3,projectBatch:项目批次2,isSXBH:1,organizationName:机构名称1}]

我的解答思路和尝试过的方法

1.从“项目详情数组”获取“项目批次数组”

for (var m = 0; m < projectInfoList.length; m++) {
for (var n = m + 1; n < projectInfoList.length; n++) {
if (projectInfoList[m].projectName == projectInfoList[n].projectName && projectInfoList[m].issueNumber == projectInfoList[n].issueNumber) {
console.log('测试22', projectInfoList[m], projectInfoList[n]);
projectInfoList.splice(n, 1);
}
}
}

2.
function newArrFn (arr) {
let newArr = []
let map = new Map()
for(let i = 0;i<arr.length;i++){
// 如果 map里面不包含,就设置进去
if (!map.has(arr[i])) {
map.set(arr[i], true)
newArr.push(arr[i])
}
};
return newArr
}
newArrFn(projectInfoList);

最后新数组中数据是重复的

展开全部

  • 写回答

4条回答 默认 最新

  • Z_pigeon 2022-09-12 12:49
    关注
    
    项目详情集合:projectInfoList
    项目集合:projectList
    项目批次集合:projectBatchList
    
    var newProjectList = projectList.map(i => ({
        programName: i.programName,
        proinfos: projectInfoList.filter(j => j.programName === i.programName)
    }))
    console.log('newProjectList ', newProjectList)
    
    第二个没看懂按什么合并
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    浪潮行舟 2022-09-13 01:07

    第二个是按 项目名称、项目批次合并,不过用你这种方式,在项目名称基础上加个项目批次就行了

    回复
    Z_pigeon 回复 浪潮行舟 2022-09-13 04:25

    那你试试吧

    回复
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月13日
  • 修改了问题 9月13日
  • 创建了问题 9月12日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部