我有一个array
,里面有多个objects
。
它的结构如下:
const Instructor = [
{ ID: '141',
InstructorNameAR: 'test',
InstructorNameEN: 'Mohamed Ahmed',
InstructorBriefAR: 'phd in chemistry',
InstructorBriefEN: 'phd in chemistry' },
{ ID: '140',
InstructorNameAR: 'test',
InstructorNameEN: 'Mahmoud Ahmed',
InstructorBriefAR: 'phd in chemistry',
InstructorBriefEN: 'phd in chemistry' },
]
我想添加其他objects
,但根据重复值ID
过滤掉重复项。
我要添加的objects
示例:-
const InstructorInstance = {
ID: 'ID',
InstructorNameAR: 'NAMEAR',
InstructorNameEN: 'NAMEEN',
InstructorBriefAR: 'BRIEFAR',
InstructorBriefEN : 'BRIEFEN'
}
我使用此方法按ID
进行过滤。
但这没有用,因为它仅将single
的{{1}}值与我提供的值进行比较。这意味着它可能是array
,但仍会添加,因为它没有检查每个duplicated object
中是否存在它
array element
答案 0 :(得分:2)
在确定是否存在重复项之前,必须首先循环整个数组。您可以为此使用forEach
,但是every
或some
似乎很适合这种工作:
const test = Instructor.every(instance => instance.ID !== InstructorInstance.ID);
if(test) {
Instructor.push(InstructorInstance);
}
这意味着如果Instructor
中的每个对象都与ID
具有不同的InstructorInstance
,则将InstructorInstance
推入Instructor
。
注意:您可以将测试直接放在if
内,而不必将其存储在变量test
中:
if(Instructor.every(instance => instance.ID !== InstructorInstance.ID)) {
Instructor.push(InstructorInstance);
}
但这看起来不对吗?
答案 1 :(得分:1)
您可以使用some
检查该对象是否已经存在,如果不存在,请添加它:
if (!Instructor.some(i => i.ID == instance.ID)) {
Instructor.push(instance);
}