简体   繁体   中英

Push one array as key, value to other array using javascript

I have two arrays like

var array1 = [{group_name: "Gp HQ, Hyderabad", group_id: "1"},
              {group_name: "Gp HQ, Secunderabad", group_id: "2"},
              {group_name: "Group HQ, Guntur", group_id: "3"}];


var array2 = [
  {unit_total: 1, branch_name: "1 (T) Air Sqn", branch_group_id: "1", branch_id: "6"},
  {unit_total: 1, branch_name: "1 (T) Arty Bty", branch_group_id: "1", branch_id: "5"},
  {unit_total: 3, branch_name: "1 (T) Bn", branch_group_id: "1", branch_id: "1"}, 
  {unit_total: 1, branch_name: "1 (T) R&V Regt", branch_group_id: "1", branch_id: "4"},
  {unit_total: 3, branch_name: "3 (T) Bn", branch_group_id: "1", branch_id: "2"}];

Here array2 is multilevel array, next value will contain group_id 2 as follows

I want to push array2 value to array1 with key name like below

var result_array = [{group_id:1, group_name:test_group, child_array:[
                     {unit_total: 1, branch_name: "1 (T) Air Sqn", branch_group_id: "1", branch_id: "6"},
                     {unit_total: 1, branch_name: "1 (T) Arty Bty", branch_group_id: "1", branch_id: "5"},
                     {unit_total: 3, branch_name: "1 (T) Bn", branch_group_id: "1", branch_id: "1"}, 
                     {unit_total: 1, branch_name: "1 (T) R&V Regt", branch_group_id: "1", branch_id: "4"},
                     {unit_total: 3, branch_name: "3 (T) Bn", branch_group_id: "1", branch_id: "2"}},

                    {group_id:2, group_name:test_group, child_array:[
                     {unit_total: 1, branch_name: "1 (T) Air Sqn", branch_group_id: "2", branch_id: "6"},
                     {unit_total: 1, branch_name: "1 (T) Arty Bty", branch_group_id: "2", branch_id: "5"},
                     {unit_total: 3, branch_name: "1 (T) Bn", branch_group_id: "2", branch_id: "1"}, 
                     {unit_total: 1, branch_name: "1 (T) R&V Regt", branch_group_id: "2", branch_id: "4"},
                     {unit_total: 3, branch_name: "3 (T) Bn", branch_group_id: "2", branch_id: "2"}}

]];

How can i achieve this. I have tried using array_push and concat methods also but no luck. Please let me know how to do this. Thanks in advance

You can loop through array1 and use array.filter to populate child_array:

 var array1 = [ { group_id: "1", group_name: 'test_group1' }, { group_id: "2", group_name: 'test_group1' } ]; var array2 = [ {unit_total: 1, branch_name: "1 (T) Air Sqn", branch_group_id: "1", branch_id: "6"}, {unit_total: 1, branch_name: "1 (T) Arty Bty", branch_group_id: "1", branch_id: "5"}, {unit_total: 3, branch_name: "1 (T) Bn", branch_group_id: "2", branch_id: "1"}, {unit_total: 1, branch_name: "1 (T) R&V Regt", branch_group_id: "1", branch_id: "4"}, {unit_total: 3, branch_name: "3 (T) Bn", branch_group_id: "2", branch_id: "2"}]; array1.forEach(group => group.child_array = array2.filter(e => e.branch_group_id === group.group_id)); console.log(array1); 

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