简体   繁体   中英

Combine 2 different javascript json objects into one with a loop and joining on the questionid ,

So I am trying to combine 2 different javascript object than I can end up using in an angularjs ng-repeat . since there is a 1 to many relationship from the database, I was pulling queries separately.

What I have is this:

Main list of data  ,  3 object sample
0: Object
  $$hashKey: "object:4"
  Active:true
  QuestionId:2
  SalesChannel:"DTD"
1: Object
  $$hashKey: "object:5"
  Active:true
  QuestionId:3
  SalesChannel:"DTD"
2: Object
  $$hashKey: "object:6"
  Active:true
  QuestionId:5
  SalesChannel:"DTD"

Then another query returned data into what I want to relate as JSON into the other object

Object { Id: 3, Name: "Text box" QuestionId: 3}   
{ Id: 4, Name: "Text box" QuestionId: 3} 
{ Id: 9, Name: "Text box" QuestionId: 5} 

So since I have both of these objects , I am wanting to combine.

Naturally I would think that I should return from the database, but then I also think about looping over and appending

for loop on main
{
....  find where main.QuestionId = sub.QuestionId   and it to be added in as a nested object of json type...

Thus the end result SHOULD look like

[{
  Active:true,
  QuestionId: 3
  SubData: [ { 
                Id: 3,
                Name: "TextBox
                QuestionId:3 
          },
          {
                Id: 4,
                Name: "TextBox
                QuestionId:3 
          }],
  SalesChannel: "DTD"
}]
 // and so on  

How can i achieve this?

You want to go through all of the main objects, and assign to them only those results from second query. Use Array.prototype.forEach to go through them all, and Array.prototype.filter to select only appropriate results from secondary query.

firstQueryResult.forEach((firstObject)=>
  firstObject.subdata = secondQueryResult.filter((secondObject)=>
    secondObject.QuestionId === firstObject.QuestionId))

BTW, this has nothing to do with angularjs

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

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