数组对象数组问题

时间:2018-12-28 12:11:33

标签: javascript arrays object

我要在管理员下进行test#1&test#4,在经理下进行test#2,而在主管下进行test#3。 我已经尝试过,但无法按照要求进行操作

链接:https://jsbin.com/cecafeqobo/edit?js,console 下面是我的代码:

var mapData = [];

var userList =[{id:2,name:'Admin', users:[{id:2, name:'Test#1'},{id:3,name:'test#4'}]},{id:2,name:'Manager', users:[{id:2, name:'test#2'}]},{id:2,name:'Head', users:[{id:2, name:'test#3'}]}];
userList.forEach(function(element) {
  console.log(element.name)
  element.users.forEach(function (element) {
       mapData.push(element);
  })
})

mapData.forEach((element) => {
  console.log(element.name);
});

3 个答案:

答案 0 :(得分:1)

您是否尝试过使用某些if / elses?例如

admin_users = [];
manager_users = [];

userList.forEach(function (root_element) {
  element.users.forEach(function (element) {
    switch (root_element.name) {
      case 'Admin':
        admin_users.push(element);
        break;
      // Same for other types of users.
    }
  })
})

然后,您的管理员用户将保存在admin_users变量中,您的管理员用户将保存在manager_users变量中。

答案 1 :(得分:0)

那是因为您要在最后一个forEach中将所有用户记录为一个。这给你这个输出。首先,您输出所有“标题”,然后输出所有用户。

您应该考虑记录它,而不是将用户附加到数组。

userList.forEach(function(element) {
  console.log(element.name)
  element.users.forEach(function (element) {
       console.log(element.name);
  })
})

var userList =[{id:2,name:'Admin', users:[{id:2, name:'Test#1'},{id:3,name:'test#4'}]},{id:2,name:'Manager', users:[{id:2, name:'test#2'}]},{id:2,name:'Head', users:[{id:2, name:'test#3'}]}];

userList.forEach(function(element) {
  console.log(element.name)
  element.users.forEach(function (element) {
       console.log(element.name);
  })
})

答案 2 :(得分:0)

@ Adriani6

实际上您的方法是可行的,但是如何将Admin,Manager,Head变为大胆且动态的样式,现在我已将所有数据推送到一个在下拉列表中打印的数组中

   var mapData = [];

var userList =[{id:2,name:'Admin', users:[{id:2, name:'Test#1'},{id:3,name:'test#4'}]},{id:2,name:'Manager', users:[{id:2, name:'test#2'}]},{id:2,name:'Head', users:[{id:2, name:'test#3'}]}];
userList.forEach(function(element) {
 // console.log(element.name)
  mapData.push(element.name)
  element.users.forEach(function (element) {
       mapData.push(element.name);
  })
})