Javascript 当要比较的对象为空时,如何使用筛选器?
我正在遍历我的数据对象,创建另一个对象(“compareTask”),并使用filter方法返回数据中id与要比较的对象中的id不匹配的对象 如果它是空对象或没有ID,我会保留(显然会得到“无法读取未定义的属性“0”)。我无法真正放置if/else并检查它是否为空对象,因为这正是我要返回的情况之一。任何帮助都将非常好!谢谢Javascript 当要比较的对象为空时,如何使用筛选器?,javascript,Javascript,我正在遍历我的数据对象,创建另一个对象(“compareTask”),并使用filter方法返回数据中id与要比较的对象中的id不匹配的对象 如果它是空对象或没有ID,我会保留(显然会得到“无法读取未定义的属性“0”)。我无法真正放置if/else并检查它是否为空对象,因为这正是我要返回的情况之一。任何帮助都将非常好!谢谢 var data = { names: [ { name: "mike", taskID: 1 }, { name: "nat", tas
var data = {
names: [
{ name: "mike", taskID: 1 },
{ name: "nat", taskID: 2 }
],
jobs: [
{ name: "aaa", taskID: 3 },
{ name: "bbb", taskID: 4 }
],
cities: [
{ name: "london", taskID: 5 },
{ name: "new york", taskID: 6 }
]
}
var compareTask = {
triggers: [
{ name: "Plumbing", taskID: 9 },
{ name: "FireDepartment", taskID: 4 }
]
}
data.names.filter((item, index) => {
return item.taskID !== compareTask.names[index].taskID
})
您可以使用筛选并仅获取没有compareTask
的taskID
的元素
var data={name:[{name:“mike”,taskID:1},{name:“nat”,taskID:2}],jobs:[{name:“aaa”,taskID:3},{name:“bbb”,taskID:4}],城市:[{name:“伦敦”,taskID:5},{name:“纽约”,taskID:6},
compareTask={触发器:[{name:“管道”,任务ID:9},{name:“消防部门”,任务ID:4}]},
结果=data.jobs.filter(项=>
每个({taskID}=>taskID!==item.taskID));
console.log(result);
如果我使用一些而不是过滤器,我会得到相同的错误您看到这个错误是因为compareTask
中没有names
属性。如果您是指compareTask.triggers[index].taskID
然后我会查看OK,所以我不能使用一些,因为我想返回,如果在比较中,Task不是id为的对象,如果它为空,如果它是另一个属性,或者如果它有相同的属性但不同的taskID,那么没有理由期望它们之间的索引匹配。请添加所需的结果。(可能是有作业的那一个吧
)。非常感谢,效果很好!!你知道如果compareTask对象不是数组,我能做什么吗?var compareTask={triggers:{name:“pipping”,taskID:9}你可以直接获取对象,而无需任何迭代:result=data.jobs.filter(item=>compareTask.taskID!==item.taskID);