javascript - 在 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"}]
我试过了forEach
,map
但结果是一样的。我知道还有另一种方法,但我不知道如何。谢谢大家。
编辑:在我的情况下,所有答案都很好,但我使用 Set 方法来解决我的问题。
解决方案
也许您可以创建一组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);
推荐阅读
- django - 允许用户使用 django boto3 从 AWS 下载文件,我做错了什么?
- objective-c - 在objective-c或swift中覆盖pod文件方法的最佳实践是什么?
- reactjs - 通过 updateHeight() 使用 SwipeableViews
- php - 如何在 Laravel 的路线中链接雄辩的关系?
- android - Android Intent(或代码)在(outlook,gmail)中打开电子邮件编辑器
- java - 从 Java 代码访问对象类的 const 字段时为什么会出错
- python-3.x - 带有依赖项的python docker文件
- javascript - listMonth FullCalendar 视图:长事件的拆分持续时间
- sql - ssrs 2015 中的 SQL 值在 INT32 中太大或太小
- python - Python将数组插入字符串