【问题标题】:How to add value to array after checking another array检查另一个数组后如何向数组添加值
【发布时间】: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


【解决方案1】:

试试这个

var userGroup = [{Id:"1",UserId:"2",UserGroupId:"1"},
           {Id:"2",UserId:"3",UserGroupId:"1"},
            {Id:"3",UserId:"4",UserGroupId:"2"}]

var employees = [{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"}   ]

employees.forEach(function(item){
        var found = userGroup.filter(i=>i.UserId==item.Id);
        if(found.length>0)
            item.enrolled = true
        else
            item.enrolled = false
})

console.log(employees);

然后员工将包含已注册或不在您的控制台中尝试此操作

【讨论】:

  • 我将获得一个变量 GroupId 的值。这我必须与 userGroup.UserGroupId 匹配,然后仅对该组下的那些用户进行更改
  • 我没有在员工列表中看到组 ID,您可以添加它们然后我将更新答案
  • 没有。基本上我想更改已注册:在 userGroup 表中 groupId =1 中的那些员工的员工表中为 true...
  • 那么如何知道哪个员工在 groud Id =1 中没有员工列表中的属性。即我需要检查一些值。
  • 基本上,员工表中的员工将被添加到组中。然后他们将被添加到 UserGroup 表中,他们的employeeNo 作为 UserId 以及他们所属的组......即 groupId=1。然后,我将搜索特定 groupId 下的所有用户,并将员工表中的这些用户更改为登记:真。当我说特定的组 id 时,这是作为参数给出的.. 所以它可以改变..
【解决方案2】:

您的代码的问题是,当执行if (arrayItem.UserGroupId === GroupId) { 时,它会将相关员工的enrolled 更改为true,但是当执行此检查的else 部分时,它会覆盖由if 条件部分。 试试这个。

UserGroupUser = [{Id:"1",UserId:"2",UserGroupId:"1"},
             {Id:"2",UserId:"3",UserGroupId:"1"},
             {Id:"3",UserId:"4",UserGroupId:"2"}];
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 = "1";
Employee.map(function (emp) {
  emp.enrolled = false;
});
UserGroupUser.forEach(function (arrayItem) {
  if (arrayItem.UserGroupId === GroupId) {
    Employee.map(function (emp) {
      if (arrayItem.UserId === emp.EmployeeId) {
        emp.enrolled = true;
      }
    });
  }
});
console.log(Employee);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多