簡體   English   中英

通過循環將2個不同的javascript json對象合並為一個對象,並加入questionid中,

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

所以我試圖結合2種不同的javascript對象,而最終我無法在angularjs ng-repeat中使用。 由於數據庫中存在一對多關系,因此我分別提取查詢。

我所擁有的是:

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"

然后另一個查詢將數據返回到我想作為JSON關聯到另一個對象的數據

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

因此,由於我同時擁有這兩個對象,因此我想將它們結合起來。

自然地,我認為我應該從數據庫中返回,但是隨后我還考慮了循環和追加

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

因此最終結果應該看起來像

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

我怎樣才能做到這一點?

您想要遍歷所有主要對象,並僅將第二次查詢的結果分配給它們。 使用Array.prototype.forEach遍歷所有內容,並使用Array.prototype.filter從輔助查詢中僅選擇適當的結果。

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

順便說一句,這與angularjs無關

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects /陣列/的forEach

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM