【发布时间】:2017-05-04 05:11:32
【问题描述】:
我有两个这样的数组:
UserGroupUser[{Id:"1",UserId:"2",UserGroupId"1"},
{Id:"2",UserId:"3",UserGroupId"1"},
{Id:"3",UserId:"4",UserGroupId"2"}]
UserGroupId 将具有 1、2、3 等值。
Employee[{EmployeeId:"1", EmpName:"John", Email:"john@example.com"},
{EmployeeId:"2", EmpName:"Mary", Email:"Mary@example.com"},
{EmployeeId:"3", EmpName:"Sarah", Email:"Sarah@example.com"},
{EmployeeId:"4", EmpName:"Jake", Email:"Jake@example.com"} ]
我会将一个数字存储在一个变量 GroupId 中,例如 GroupId=1 我想要做的是检查 UserGroupUser 表,如果 GroupId 1 匹配关键 UserGroupId 的任何行,并且如果每个 UserId 匹配,则 Employee 表中匹配的相应 EmployeeId 意味着我添加一个新的元素名为 enrolled=true。 否则,如果不匹配,则向 Employee 添加一个元素 enrolled=false。
例如:
如果 GroupId 为 =1,那么我想在 UserGroupUser 数组中获取 UserGroupId 为 1 的用户的用户 ID,并将注册:true 添加到 Employee 数组 EmployeeId 到与 UserId 对应的用户。
这就是我尝试的方式..
UserGroupUser.forEach(function (arrayItem) {
if (arrayItem.UserGroupId === GroupId) {
result = Employee.map(function (a, index, array) {
while (arrayItem.UserId === a.EmployeeNo) {
a.enrolled = true;
}
return a;
}
);
}
else {
result = Employee.map(function (a, index, array) {
a.enrolled = false;
return a;
}
);
}
});
我做错了什么?我该怎么做?
【问题讨论】:
-
您无法从
Array.forEach()返回 -
我认为您需要通过添加注册 = true/false 来更改数组员工
-
返回来自 map() 函数,该函数会将新更改的 Employee 数组分配给结果。
-
是...如果该用户在 GroupId = 1 下的 UserGroupUser 数组中
-
好吧 1 分钟让我来制作小提琴
标签: javascript angularjs arrays ecmascript-6