Javascript 当要比较的对象为空时,如何使用筛选器?

Javascript 当要比较的对象为空时,如何使用筛选器?,javascript,Javascript,我正在遍历我的数据对象,创建另一个对象(“compareTask”),并使用filter方法返回数据中id与要比较的对象中的id不匹配的对象 如果它是空对象或没有ID,我会保留(显然会得到“无法读取未定义的属性“0”)。我无法真正放置if/else并检查它是否为空对象,因为这正是我要返回的情况之一。任何帮助都将非常好!谢谢 var data = { names: [ { name: "mike", taskID: 1 }, { name: "nat", tas

我正在遍历我的数据对象,创建另一个对象(“compareTask”),并使用filter方法返回数据中id与要比较的对象中的id不匹配的对象

如果它是空对象或没有ID,我会保留(显然会得到“无法读取未定义的属性“0”)。我无法真正放置if/else并检查它是否为空对象,因为这正是我要返回的情况之一。任何帮助都将非常好!谢谢

  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);