根据存在于另一个具有不同属性的数组中的存在来过滤数组

Jim*_*hoe 1 javascript arrays ecmascript-6

let arr1 = [{itemId:1, name:"item1"}, {itemId:2, name:"item2"},{itemId:3, name:"item3"}]

let arr2 = [{id:1, name:"item1"}, {id:2, name:"item2"}]
Run Code Online (Sandbox Code Playgroud)

如何arr1根据在arr2哪里arr1.itemId等于的匹配项进行过滤arr2.id

因此,在这种情况下的预期结果将是:

[{itemId:1, name:"item1"}, {itemId:2, name:"item2"}]
Run Code Online (Sandbox Code Playgroud)

我已经尝试过搜索,因此如果存在问题可以将我指向正确的方向,这将对您有所帮助

谢谢

Jon*_*lms 6

建立一组ID,然后根据该ID进行过滤:

 const ids = new Set(arr2.map(it => it.id));
 const result = array1.filter(it => ids.has(it.itemId));
Run Code Online (Sandbox Code Playgroud)

  • @JonasWilms:好吧,“指数”有点夸张;)我会说“二次”。 (4认同)
  • @eyecatchUp:乔纳斯时间= len(a)+ len(b),jo_va的时间= len(a)* len(b) (3认同)