繁体   English   中英

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

[英]how to remove matching elements in an array?

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

 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)

i is the index, and allJobsNear is an array of objects. So I want to remove all jobs from near me if I've already applied to it.

appliedIds = [1,2,3,4,5,6]
jobsNearMeIds = [9,7,8,1,2,3]

If jobs near me ids have any id from appliedIds, return its index in jobsnearmeid and remove it.

你似乎需要的是

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM