首页 > 解决方案 > 在 forEach 循环下过滤数组

问题描述

const likedUsers = [{
    id: "1"
  },
  {
    id: "2"
  }
]
const needToFilter = [{
    id: "1",
    userInfo: "info"
  }, {
    id: "2",
    userInfo: "info"
  },
  {
    id: "3",
    userInfo: "info"
  }
]
likedUsers.forEach(item => needToFilter.filter(needToFilter => {
  return needToFilter.id !== item.id
}));
console.log(users);

我有两个这样的数组,如果需要过滤数组的用户 ID 存在于 likeUsers 数组中,它需要消失。

过滤后的数组如下:

needToFilter => [{id:"3",userInfo:"info"}]

我试过了forEachmap但结果是一样的。我知道还有另一种方法,但我不知道如何。谢谢大家。

编辑:在我的情况下,所有答案都很好,但我使用 Set 方法来解决我的问题。

标签: javascriptarraysfilter

解决方案


也许您可以创建一likedUsersIds过滤前的内容:

const likedUsers = [
  {
    id: "1"
  },
  {
    id: "2"
  }
];

const needToFilter = [
  {
    id: "1",
    userInfo: "info"
  }, 
  {
    id: "2",
    userInfo: "info"
  },
  {
    id: "3",
    userInfo: "info"
  }
];

const likedUsersIds = new Set(likedUsers.map(o => o.id));
const filtered = needToFilter.filter(o => !likedUsersIds.has(o.id));
console.log(filtered);


推荐阅读