如何删除数组中的匹配元素?

时间:2019-07-10 23:47:29

标签: javascript

我开发了一款应用,可以发布您附近的用户发布的职位。当您申请工作时,该工作会在mongodb中发布并加载到应用程序的一部分中,您可以在其中管理已发布,已应用和已完成的工作。我的问题是,当作业在“应用”部分中发布时,它仍然显示在您可以申请的页面上。 在页面加载时,api调用会获取已应用的作业和我附近的作业。每个作业都有一个ID,因此我将它们保存在数组中,以便可以比较应用的作业ID和我附近的ID中的每个值,如果它们匹配,则可以使用拼接从我附近的作业中删除该特定作业。这样,已经申请的工作将不会与我尚未申请的工作一起出现。

const [...elements] = document.getElementsByTagName("*");
elements.forEach((element) => {
    element.scrollTo(0,element.scrollHeight)
});
 let jobsN = this.allJobsNear;
 let appliedId = [];
 let jobsNearId = [];
 for(let i=0; i<jobsN.length; i++){

   jobsNearId.push(this.allJobsNear[i]._id)

 }
 for(let i=0; i<applied.length; i++){

   appliedId.push(this.appliedJobs[i]._id)

 }
 console.log(jobsNearId)
 console.log(appliedId)
jobsNearId.filter(el,i)=>{
  if(el === appliedId[i]){
    return i;
  }
}) 

        this.allJobsNear.splice(i,1)

1 个答案:

答案 0 :(得分:0)

您似乎需要的是

const nearButNotApplied = this.allJobsNear.filter(({
  _id: nearId
}) => !this.appliedJobs.some(({
  _id: appliedId
}) => appliedId === nearId));

演示

const allJobsNear = [{
  _id: 1
}, {
  _id: 2
}, {
  _id: 3
}, {
  _id: 4
}]
const appliedJobs = [{
  _id: 3
}, {
  _id: 1
}]

const nearButNotApplied = allJobsNear.filter(({
  _id: nearId
}) => !appliedJobs.some(({
  _id: appliedId
}) => appliedId === nearId));

console.log(nearButNotApplied)

相关问题