2017-09-23 13 views
2

我有2個不同的對象:使用一個對象值作爲密鑰來訪問其他對象值在車把

1)在global.json

var objA = { 
    "menu": { 
     "icon": [ 
      { 
       "network": "mail", 
      }, 
      { 
       "network": "facebook", 
      }, 
      { 
       "network": "twitter", 
      }, 
      { 
       "network": "googleplus", 
      } 
     ] 
    } 
} 

2)在index.json

var objB = { 
    "facebook": { 
     "data": "Facebook Data", 
    }, 
    "twitter": { 
     "data": "Twitter Data", 
    }, 
    "mail": { 
     "data": "Mail Data", 
    }, 
    "googleplus": { 
     "data": "GooglePlus Data", 
    } 
} 

現在我想用第一對象值作爲密鑰訪問第二個對象值.hbs文件,就像我們在JavaScript做。

例如:如果我想訪問twitter數據,我將在javascript中使用下面的代碼來訪問它。

for(var i=0; i<objA["menu"]["icon"].length; i++){ 
    console.log(objB[objA["menu"]["icon"][i]["network"]]["data"]); 
} 

我運行每個循環中.hbs文件:

{{#each global.objA.menu.icon}} 
    <li>{{data}}</li> 
{{/each}} 

這裏我想說明基於網絡每個社會數據

回答

0

我有車把零知識,但假設它至少是一個JavaScript,

data = objA.menu.icon.map(e=>objB[e.network]) 

應該滿足你的最後一個對象的願望。

var objA = { 
 
    "menu": { 
 
     "icon": [ 
 
      { 
 
       "network": "mail", 
 
      }, 
 
      { 
 
       "network": "facebook", 
 
      }, 
 
      { 
 
       "network": "twitter", 
 
      }, 
 
      { 
 
       "network": "googleplus", 
 
      } 
 
     ] 
 
    } 
 
}; 
 

 
var objB = { 
 
    "facebook": { 
 
     "data": "Facebook Data", 
 
    }, 
 
    "twitter": { 
 
     "data": "Twitter Data", 
 
    }, 
 
    "mail": { 
 
     "data": "Mail Data", 
 
    }, 
 
    "googleplus": { 
 
     "data": "GooglePlus Data", 
 
    } 
 
}; 
 

 
data = objA.menu.icon.map(e=>objB[e.network]) 
 

 
console.log(data);

+0

非常感謝你@marmeladze對你的幫助,時間和你的嘗試,但它不是一個JavaScript。 您提供的答案不起作用。 –

0

可以使用lookupwith的組合實現這個內置的幫手。 lookup充當方式使用可變密鑰和with集的情況下,讓您可以訪問每一個網絡對象的屬性。

{{#each global.objA.menu.icon}} 
    {{#with (lookup @root/global/objB this.network)}} 
    {{data}} 
    {{/with}} 
{{/each}} 
// outputs (no formatting) 
// 'Mail DataFacebook DataTwitter DataGooglePlus Data' 
相關問題