0

I am retrieving some data from PostgreSQL using node js API call. In this I am using 2 different pg tables. I am checking condition if "unit_code" is equal to "fk_unit_code" then it should combine the respective values from "Group_individuals" column and push it to the array. To get the "userData" I am doing left join between 2 tables. I have tried below code but its pushing single row per iteration of for loop.

function buildObject(userData){

for (var i = 0; i < userData.length; i++){
myArray = new Array() // at each iteration this will be empty and we get new group of "Group_individuals"
if(userData[i].unit_code=== userData[i].fk_unit_code){

                        myArray.push(userData[i].Group_individuals)
                        console.log(myArray)

            }
     }
}

Data available in "userData" is as below:

[
    { Group_individuals  : 'John',
      unit_code   : 2,
      fk_unit_code: 2,
    }
    { Group_individuals  : 'Rocky',
      unit_code   : 2,
      fk_unit_code: 2,
    }
    { Group_individuals  : 'Alex',
      unit_code   : 3,
      fk_unit_code: 3,
    }
    { Group_individuals  : 'Prince',
      unit_code   : 3,
      fk_unit_code: 3,
    }
    { Group_individuals  : 'James',
      unit_code   : 2,
      fk_unit_code: 2,
    }

]

I want that myArray should look like: In first iteration myArray = [John, Rocky, James] In second iteration myArray = [Alex, Prince]

1 Answer 1

1

    var userData = [{
    	Group_individuals: 'John',
    	unit_code: 2,
    	fk_unit_code: 2,
    },{
    	Group_individuals: 'Rocky',
    	unit_code: 2,
    	fk_unit_code: 2,
    },{
    	Group_individuals: 'Alex',
    	unit_code: 3,
    	fk_unit_code: 3,
    },{
    	Group_individuals: 'Prince',
    	unit_code: 3,
    	fk_unit_code: 3,
    },{
    	Group_individuals: 'James',
    	unit_code: 2,
    	fk_unit_code: 2,
    }]
    var result = {};
    
    for (var i in userData) {
    	if (userData[i].unit_code != userData[i].fk_unit_code)
    		continue;
    	var key = `${userData[i].unit_code}${userData[i].fk_unit_code}`;
    
    	result[key] = result[key] || [];
    
    	result[key].push(userData[i].Group_individuals);
    
    }
    
    console.log(result);

Sign up to request clarification or add additional context in comments.

2 Comments

might be nice to explain this answer to OP so they can learn a bit (as well as future readers too)
@vcode Your answer is really appreciated, This helped me to achieve what I was expecting. Thank you !!!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.