如果使用类型script/javascript在第二个数组中存在相同的对象,我必须过滤第一个数组
这是我的阵列
var students = [{id: 1, name : 'SSS'},
{id: 2, name : 'SSa'},
{id: 3, name : 'SSb'},
{id: 4, name : 'SSc'},
{id: 5, name : 'SSd'}];
var emp = [{id: 1, name : 'SSS'},
{id: 4, name : 'SSc'},
{id: 5, name : 'SSd'}];
Run Code Online (Sandbox Code Playgroud)
输出应该是
var finalarr = [{id: 2, name : 'SSa'},
{id: 3, name : 'SSb'}]
Run Code Online (Sandbox Code Playgroud)
我在下面试过,但产生错误的输出
for (let i = 0; i < students.length; i++) {
for (let j = 0; j < emp.length; j++) {
if (students[i].id != emp[j].id) {
finalarr.push(students[i]);
}
}
}
console.log(finalarr);
Run Code Online (Sandbox Code Playgroud)
//下面是我的实际应用程序代码
this.appointmentTypes.filter((data, index) => this.typesData.includes(this.typesData[index].appointmentType.id))
Run Code Online (Sandbox Code Playgroud)
对象是对内存位置的引用 - ===除非它们引用相同的内存位置,否则它们将永远不会相互引用,因此includes无法工作.迭代整个数组并测试名称和ID:
var students=[{id:1,name:'SSS'},{id:2,name:'SSa'},{id:3,name:'SSb'},{id:4,name:'SSc'},{id:5,name:'SSd'}]
var emp=[{id:1,name:'SSS'},{id:4,name:'SSc'},{id:5,name:'SSd'}]
const finalArr = students.filter(({ id, name }) =>
!emp.some(exclude => exclude.id === id && exclude.name === name)
);
console.log(finalArr);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |