简体   繁体   中英

How to concat sub object array inside object in javascript?

I would like to concat sub object array inside object in javascript. I have an object array inside an object: I would like to return the department sub array into one object array.

var array =
    {
      "departsObjInput": { 
        "departmentRequests": [
          {
            "department": [
              [
                {
                  "groupID": "20",
                  "groupName": "Group20",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING"  
                },
                {
                  "groupID": "21",
                  "groupName": "Group21",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING"  
                },
                {
                  "groupID": "24",              
                  "groupName": "Group24",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING" 
                }
              ],
              [
                {
                  "groupID": "18",
                  "groupName": "Group18",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING"  
                },
                {
                  "groupID": "26",
                  "groupName": "Group26",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING"
                }
              ]
            ] 
          },
          {
            "department": [
              [
                {
                  "groupID": "90",
                  "groupName": "Group90",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING",
                },
                {
                  "groupID": "38",
                  "groupName": "Group38",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING",
                }
              ],
              [
                {
                  "groupID": "37",
                  "groupName": "Group37",
                  "requestDate": "2020-01-21",
                  "deptStatus": "PENDING",
                }
              ]
            ],
          }
        ]
      }
    }

I would like to concat sub array of department like :

  {
  "departsObjInput": { 
    "departmentRequests": [
      {
        "department":  
          [
            {
              "groupID": "20",
              "groupName": "Group20",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING"  
            },
            {
              "groupID": "21",
              "groupName": "Group21",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING"  
            },
            {
              "groupID": "24",              
              "groupName": "Group24",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING" 
            },          
            {
              "groupID": "18",
              "groupName": "Group18",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING"  
            },
            {
              "groupID": "26",
              "groupName": "Group26",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING"
            }
          ]

      },
      {
        "department":  
          [
            {
              "groupID": "90",
              "groupName": "Group90",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING",
            },
            {
              "groupID": "38",
              "groupName": "Group38",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING",
            },           
            {
              "groupID": "37",
              "groupName": "Group37",
              "requestDate": "2020-01-21",
              "deptStatus": "PENDING",
            }
          ]
         ,
      }
    ]
  }
}

what I tried to :

var deptItem = array.departsObjInput.departmentRequests
var merged = [].concat.apply([], deptItem);
return merged;

I tried other scritps but I could not get the answer. Please help me to find the solution.

Thanks in advance,

The array is in array.departsObjInput.departmentRequests.department .

And departmentRequests is an array, you need to index it.

array.departsObjInput.departmentRequests[i].department = [].concat(...array.departsObjInput.departmentRequests[i].department);

You just need to use forEach loop to access each department array then make it single 1D array using flat()

array.departsObjInput.departmentRequests.forEach(x => {
  x.department = x.department.flat();
})

 var array = { "departsObjInput": { "departmentRequests": [ { "department": [ [ { "groupID": "20", "groupName": "Group20", "requestDate": "2020-01-21", "deptStatus": "PENDING" }, { "groupID": "21", "groupName": "Group21", "requestDate": "2020-01-21", "deptStatus": "PENDING" }, { "groupID": "24", "groupName": "Group24", "requestDate": "2020-01-21", "deptStatus": "PENDING" } ], [ { "groupID": "18", "groupName": "Group18", "requestDate": "2020-01-21", "deptStatus": "PENDING" }, { "groupID": "26", "groupName": "Group26", "requestDate": "2020-01-21", "deptStatus": "PENDING" } ] ] }, { "department": [ [ { "groupID": "90", "groupName": "Group90", "requestDate": "2020-01-21", "deptStatus": "PENDING", }, { "groupID": "38", "groupName": "Group38", "requestDate": "2020-01-21", "deptStatus": "PENDING", } ], [ { "groupID": "37", "groupName": "Group37", "requestDate": "2020-01-21", "deptStatus": "PENDING", } ] ], } ] } } array.departsObjInput.departmentRequests.forEach(x => { x.department = x.department.flat(); }) console.log(array)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM