我有一个复杂类型FinalAnomalyStandardsDatatable:
export interface AnomalyStandardsDatatable {
target?: string;
msg?: string;
}
export interface FinalAnomalyStandardsDatatable {
projectTitle?: string;
targetObjects?: AnomalyStandardsDatatable[];
}
let listOfA: FinalAnomalyStandardsDatatable[] = [];
let listOfB: FinalAnomalyStandardsDatatable[] = [];
let anomalieProjectsA: AnomalyStandardsDatatable[] = [];
anomalieProjects.push({ target: '9999', msg: 'yo' });
anomalieProjects.push({ target: '8888', msg: 'waz' });
anomalieProjects.push({ target: '7777', msg: 'zup' });
listOfA.push({ projectTitle: 'P1', targetObjects: anomalieProjectsA });
listOfA.push({ projectTitle: 'P2', targetObjects: anomalieProjectsA });
let anomalieProjectsB: AnomalyStandardsDatatable[] = [];
anomalieProjects.push({ target: '9999', msg: 'yo' });
listOfB.push({ projectTitle: 'P1', targetObjects: anomalieProjectsB });
我想从 listOfA 中删除 listOfB 中具有相同 projectTitle 和相同 目标的重复条目 仅。
非常感谢!
答案 0 :(得分:1)
这个 map()
/filter()
组合应该可以解决问题。
newListOfA = listOfA.filter(obj => {
return listOfB.filter(objB => objB.projectTitle.trim() == obj.projectTitle.trim() && objB.targetObjects.join(",") == obj.targetObjects.join(",")).length === 0
})
let listOfA = [];
let listOfB = [];
let anomalieProjects = [];
let anomalieProjectsA = [];
anomalieProjects.push({
target: '9999',
msg: 'yo'
});
anomalieProjects.push({
target: '8888',
msg: 'waz'
});
anomalieProjects.push({
target: '7777',
msg: 'zup'
});
listOfA.push({
projectTitle: 'P1',
targetObjects: anomalieProjectsA
});
listOfA.push({
projectTitle: 'P2',
targetObjects: anomalieProjects
});
let anomalieProjectsB = [];
listOfB.push({
projectTitle: 'P1',
targetObjects: anomalieProjectsB
});
newListOfA = listOfA.filter(obj => {
return listOfB.filter(objB => objB.projectTitle.trim() == obj.projectTitle.trim() && objB.targetObjects.join(",") == obj.targetObjects.join(",")).length === 0
})
console.log(newListOfA)