Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环嵌套数组的内部循环_Javascript_Arrays_Angular_Typescript - Fatal编程技术网

Javascript 循环嵌套数组的内部循环

Javascript 循环嵌套数组的内部循环,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,我有为循环内为循环。。。我的数组输出是嵌套数组[[{…}]],但我需要 [{…}] 在这种情况下,有没有办法使这个数组没有嵌套数组 这是我的密码。。。 我有用户,对于每个用户,我都需要添加新的对象数组 users = [{ name: "user1" role: ["admin", "tester", "viewer"] },{ name: "user2" role: ["admin", "tester", "viewer"] }] userRole: any[]=[]

我有为循环内为循环。。。我的数组输出是嵌套数组[[{…}]],但我需要 [{…}]

在这种情况下,有没有办法使这个数组没有嵌套数组

这是我的密码。。。 我有用户,对于每个用户,我都需要添加新的对象数组

users = [{
  name: "user1"
  role: ["admin", "tester", "viewer"]
  },{
  name: "user2"
  role: ["admin", "tester", "viewer"]
  }]

userRole: any[]=[];


for (let user of users){
 for (let u of user.role){
     this.userRole.push({
         name: user.name,
         role: u
     }) 
    }
    this.data.push(this.userRole) 
   }
用户可以有多个角色,但由于数据库结构的原因,我需要在用户对象中使用对象发送数组

{ "name": "user1",
   "role": [{
        "role" : "admin",
        "user" : "user1"
       },{
        "role" : "tester",
        "user" : "user1"
       },{
        "role" : "view",
        "user" : "user1"
       }]
  }
但我明白了

{ "name": "user1",
   "role": [  // nested array
        [{
        "role" : "admin",
        "user" : "user1"
       },{
        "role" : "tester",
        "user" : "user1"
       },{
        "role" : "view",
        "user" : "user1"
       }]
     ]
  }

我尝试使用.flat,但仍然是一样的

我对您的代码做了一些更改。我猜想,您创建的每个循环都有一个新角色。data是userRole的数组?在每个数组上添加数据,这样就可以循环

for (let user of users){
 for (let u of user.role){
     const userRole= { name: user.name, role: u};
     this.userRole.push(userRole);
     this.data.push(userRole) 
  }
}

我对你的密码做了一些修改。我猜想,您创建的每个循环都有一个新角色。data是userRole的数组?因此,您可以在数据数组的每个循环中添加它

for (let user of users){
 for (let u of user.role){
     const userRole= { name: user.name, role: u};
     this.userRole.push(userRole);
     this.data.push(userRole) 
  }
}

为什么不在第二个for循环中使用u来添加角色数组?

为什么不在第二个for循环中使用u来添加角色数组?

请使用flatMap:

var data={name:user1, 角色:[//嵌套数组 [{ 角色:管理员, 用户:user1 },{ 角色:测试人员, 用户:user1 },{ 角色:视图, 用户:user1 }] ] }; data.role=data.role.flatMapdata=>data; console.logprint数据对象; 控制台。日志数据请使用平面图:

var data={name:user1, 角色:[//嵌套数组 [{ 角色:管理员, 用户:user1 },{ 角色:测试人员, 用户:user1 },{ 角色:视图, 用户:user1 }] ] }; data.role=data.role.flatMapdata=>data; console.logprint数据对象; logdata您只需使用两个map

let users=[{name:user1,角色:[admin,tester,viewer]},{name:user2,角色:[admin,tester,viewer]}] 让final=users.map{name,role}=>{ 返回{ 名称 角色:role.mapuser=>{name,user} } } console.logfinal您只需使用两个map

let users=[{name:user1,角色:[admin,tester,viewer]},{name:user2,角色:[admin,tester,viewer]}] 让final=users.map{name,role}=>{ 返回{ 名称 角色:role.mapuser=>{name,user} } }
console.logfinal以下是答案,thnx对user@CodeManiac,他给了我一种思考方式

我需要把物品推到第二个循环里。。。现在一切都如我所料

for (let user of users){
  for (let u of user.role){
     this.data.push(name: user.name, role: u) 
 }
}

下面是答案,thnx对user@CodeManiac,他给了我一种思考的方式

我需要把物品推到第二个循环里。。。现在一切都如我所料

for (let user of users){
  for (let u of user.role){
     this.data.push(name: user.name, role: u) 
 }
}

this.data=this.data.concatthis.userRole?举个用户的例子会有什么帮助object@CodeManiac我不需要合并。。。我需要推item@Bravo我将更新我的问题您能给我一个示例或用户this.data=this.data.concatthis.userRole吗?一个用户示例会有什么帮助object@CodeManiac我不需要合并。。。我需要推item@Bravo我将更新我的问题你能给我一个例子或用户吗因为我需要单个对象中的每个角色因为我需要单个对象中的每个角色你给我正确的方法。。。但我需要让萨姆改变。。。但是如果你给我正确的方法。。。但我需要让萨姆改变。。。但是thnx