arrays - 如果尚不可用,则添加到数组
问题描述
我有两个数组:
Users [
{ "id": 0, "name": "Scott" },
{ "id": 0, "name": "Jan" },
{ "id": 0, "name": "Jack" },
]
Users2Add [
{ "id": 0, "name": "Scott" },
{ "id": 0, "name": "Andy" },
{ "id": 0, "name": "John" },
]
我想检查 Users2Add 中的新用户是否已经在 Users 数组中。如果是,则不要推送(添加到数组),否则将新用户(来自 User2Add)添加到用户数组。喜欢:
forEach(var u in Users2Add ) {
if(!(Users.containts(x => x.id == User2Add.idx))) Users.push(u);
}
解决方案
问题是在 JS 中没有直接的方法来检查对象是否相等,当然:
{a: 1} === {a: 1} //false
一个可能的解决方案是使用lodash:
Users2Add.forEach(user => {
if (!Users.some(existingUser = > _.isEqual(existingUser, user))) {
Users.push(user);
}
});
推荐阅读
- laravel - 我正在寻找一种使用 BasicAuth 的方法,例如 Laravel 7 中的 l5-very-basic-auth
- ios - UISlider alpha 停留在 0.5
- python - 如何在我的 Jupyter 中打开带有 .ipybn 链接的网络浏览器?
- javascript - 是否可以通过变量设置属性的背景?
- ravendb - 我可以优化 Ravendb 以创建索引吗
- c# - 平滑的摄像机旋转到玩家面对的方向
- sql - 比较 SQL Server 中的两个日期列
- azure - Azure API 没有授权
- javascript - 为什么 Javascript 可折叠在 IE 中不起作用?
- python-3.x - NSSM Python 服务因模块错误而暂停