Javascript 使用linqjs从另一个数组中筛选值来筛选一个数组

Javascript 使用linqjs从另一个数组中筛选值来筛选一个数组,javascript,arrays,linq.js,Javascript,Arrays,Linq.js,第一个是对象数组: let objectArray = [{ FullName: "Person1", PersonId: "id1" }, { FullName: "Person2", PersonId: "id2" }, { FullName: "Person3", PersonId: "id3" }, { FullName: "Person4", PersonId: "id4" } ]; 第二个是

第一个是对象数组:

let objectArray = [{
    FullName: "Person1",
    PersonId: "id1"
  },
  {
    FullName: "Person2",
    PersonId: "id2"
  },
  {
    FullName: "Person3",
    PersonId: "id3"
  },
  {
    FullName: "Person4",
    PersonId: "id4"
  }
];
第二个是包含一些ID的字符串数组

let idsArray= ["id1", "id2", "id3"];
我需要删除第一个数组中id包含在第二个数组中的对象

预期结果:

firstArray = [{
  FullName: "Person4",
  PersonId: "id4"
}];
在浏览Linqjs文档时,我发现Except方法允许我使用第二个数组作为过滤器从第一个数组中删除元素

为了使用此方法,我需要从objectArray创建一个新数组,该数组只包含ID包含在idsArray上的元素,以便将其用作参数

例如:

let filteredArray = Enumerable.From(objectArray).Except(theNewArray).ToArray();
要创建这个新数组,我可以使用来自Linqjs的Where方法

我的问题从这里开始,因为我不知道如何创建这个新数组,因为我有一个要筛选的ID数组。

您可以使用它来筛选数组。用于创建集合对象。这将更容易检查PersonId是否存在。不需要循环每个过滤器

让objectArray=[ {全名:Person1,PersonId:id1}, {全名:Person2,PersonId:id2}, {全名:Person3,PersonId:id3}, {全名:Person4,PersonId:id4} ]; 让idsArray=[id1,id2,id3]; 让idsToRemove=newsetidsrarray; 让结果=objectArray.filtero=>!idsToRemove.haso.PersonId; console.logresult 您可以使用来筛选数组。用于创建集合对象。这将更容易检查PersonId是否存在。不需要循环每个过滤器

让objectArray=[ {全名:Person1,PersonId:id1}, {全名:Person2,PersonId:id2}, {全名:Person3,PersonId:id3}, {全名:Person4,PersonId:id4} ]; 让idsArray=[id1,id2,id3]; 让idsToRemove=newsetidsrarray; 让结果=objectArray.filtero=>!idsToRemove.haso.PersonId;
console.logresult 您可以使用香草JavaScript,如下所示: 让objectArray=[ {全名:Person1,PersonId:id1}, {全名:Person2,PersonId:id2}, {全名:Person3,PersonId:id3}, {全名:Person4,PersonId:id4} ]; 让excludeIdsArray=[id1,id2,id3]; 让newObj=objectArray.filterobj=>!excludeIdsArray.includesobj.PersonId
console.lognewObj您可以使用香草JavaScript,如下所示: 让objectArray=[ {全名:Person1,PersonId:id1}, {全名:Person2,PersonId:id2}, {全名:Person3,PersonId:id3}, {全名:Person4,PersonId:id4} ]; 让excludeIdsArray=[id1,id2,id3]; 让newObj=objectArray.filterobj=>!excludeIdsArray.includesobj.PersonId console.lognewObj您可以将Array.prototype.filter方法与indexOf结合使用,以测试在要排除的ID数组中是否找到PersonId属性-如果没有,则将其添加到新的FilterDarray。例如,见下文:

让对象=[{ 全名:Person1, 人名:id1 }, { 全名:Person2, 人名:id2 }, { 全名:Person3, 人名:id3 }, { 全名:Person4, 人名:id4 } ]; 让toDelete=[id1,id2,id3]; //只需使用Array.prototype.filter方法删除不需要的内容 var filteredObjects=objects.filterfunctionelement{ 返回到delete.indexOfelement.PersonId==-1; }; console.logfilteredObjects 您可以将Array.prototype.filter方法与indexOf结合使用,以测试在要排除的ID数组中是否找到PersonId属性-如果没有,请将其添加到新的FilterDarray。例如,见下文:

让对象=[{ 全名:Person1, 人名:id1 }, { 全名:Person2, 人名:id2 }, { 全名:Person3, 人名:id3 }, { 全名:Person4, 人名:id4 } ]; 让toDelete=[id1,id2,id3]; //只需使用Array.prototype.filter方法删除不需要的内容 var filteredObjects=objects.filterfunctionelement{ 返回到delete.indexOfelement.PersonId==-1; }; console.logfilteredObjects 您可以使用对象数组和列参数来排除不需要的PersonId

var objectArray=[{FullName:Person1,PersonId:id1},{FullName:Person2,PersonId:id2},{FullName:Person3,PersonId:id3},{FullName:Person4,PersonId:id4}], IDSRARY=[id1,id2,id3], 结果=可枚举 .FromobjectArray 除了 Enumerable.FromidsArray.选择{PersonId:$}, 元人格 .托雷; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;} 您可以使用对象数组和列参数来排除不需要的PersonId

var objectArray=[{FullName:Person1,PersonId:id1},{FullName:Person2,PersonId:id2},{FullName:Person3,PersonId:id3},{FullName:Person4,PersonId:id4}], IDSRARY=[id1,id2,id3], 结果=可枚举 .FromobjectArray 除了 Enumerable.FromidsArray.选择{PersonId:$}, 元人格 .托雷; console.logresult; .as-c onsole包装{最大高度:100%!重要;顶部:0;}
尽管我在寻找Linqjs解决方案,但最终还是使用了这个解决方案。非常感谢。尽管我在寻找Linqjs解决方案,但最终还是使用了这个解决方案。非常感谢。