javascript - 检查另一个对象数组中是否缺少一个对象数组的字段
问题描述
假设我们有一个这样的对象数组:
var array1 =
[
{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
{first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'}
]
var array2 =
[
{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
{first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'},
{first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com'}
]
我想根据电子邮件地址检测 array2 中是否缺少任何行,如果缺少,请将新状态设置active
为 false 以便最终数组出现:
var array3 = [
{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
{first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'},
{first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com', active: false}
]
我尝试循环遍历两者中的每个元素,但是当我在数组中有很多元素时,它被证明很慢。
解决方案
使用forEach
循环和filter
var array1 =
[
{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
{first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'}
]
var array2 =
[
{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
{first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'},
{first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com'}
]
array2.forEach((e)=>{
array1.filter(k=>e.email==k.email).length==0?e.active="false":false;
})
console.log(array2)
推荐阅读
- ios - 关于如何在 Swift 中将字符串拆分为所需字符串数组的问题
- javascript - 删除按钮删除目标项目之前的项目
- android - 如何检查 sqlite db 文件是否对我的 android 应用程序有效?
- autohotkey - Autohotkey,切换布尔值不起作用
- mysql - 如何将“quotaUser”参数从云功能传递到 GCP 中的 MySQL 服务器?
- c++ - Cyberpet 计时器协助
- python - 如何添加最近点的名称?
- c# - 如何在 Nunit 测试中调用静态类(c#)
- android - 从两个项目更新一个 APK
- mysql - 拉表行并将属性表行添加为附加列