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);

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


项目详情集合:projectInfoList
项目集合:projectList
项目批次集合:projectBatchList

var newProjectList = projectList.map(i => ({
    programName: i.programName,
    proinfos: projectInfoList.filter(j => j.programName === i.programName)
}))
console.log('newProjectList ', newProjectList)

第二个没看懂按什么合并

参考https://www.cnblogs.com/xiangsj/p/9083300.html

let log = console.log.bind(console);
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];




let obj = {};

person = person.reduce((cur,next) => {
    obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
    return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
log(person);

根据索引编号 使用Array.from(new Set)