项目详情数组 {项目名称、项目批次、项目批次是否变化、机构名称、线索编号、发现时间}
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);
}
}
}
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)
let hs={}
let hs2={}
for(let p of projectInfoList){
hs[p.projectName]=true
hs2[p.projectName+':'+p.projectBatch+':'+p.isSXBH+':'+p.organizationName]=true
}
let x=[]
for(let n in hs){
x.push({projectName:n})
}
let x2=[]
for(let n in hs2){
let s=n.split(':')
x2.push({projectName:s[0],projectBatch:s[1],isSXBH:s[2],organizationName:s[3]})
}
没有测试,x是返回的项目信息。x2是返回的批次信息。他们分别以hs和hs2作为hash表,来去重。去重的时候,项目用projectName作为key,而批次使用批次的全部字段p.projectName+':'+p.projectBatch+':'+p.isSXBH+':'+p.organizationName
作为key,但是,批次的key从hs2里面取出来后,要用split拆分出这四个字段。