2017-02-25 76 views
0

我有像下面的示例模板我想用json對象值替換baby.name如何做到這一點請幫我解決這個問題。用json對象給定的字符串替換變量

var Template = 'Welcome to the world baby {{baby.name}}' 

const namelist= [{school:"hakvoz",baby: { name: 'shanker' }}]; 

幫助字符串替換需要實現這一點。 產量希望如此「歡迎來到世界寶寶鞋靴」

回答

0

您可以使用RegExp/\{{2}(.+)\}{2}/匹配"{{"捕獲一個或多個字符,例如,"baby.name""}}".split()"."作爲參數來獲取"baby""name",利用括號表示或破壞環分配namelist陣列內獲得在對象屬性

var Template = 'Welcome to the world baby {{baby.name}}'; 
 

 
const namelist= [{school:"hakvoz",baby: { name: 'shanker' }}]; 
 

 
let template = Template.replace(/\{{2}(.+)\}{2}/, function(match, p1) { 
 
    let [prop, key] = p1.split("."); 
 
    return namelist[0][prop][key]; 
 
}); 
 

 
document.querySelector("pre").textContent = template;
<pre></pre>

+0

類型錯誤:無法讀取的未定義的屬性「嬰兒」在此行中返回名稱列表[0] [丙] [鍵]。 – user7620655

0

您可能需要查看template literals

Template literals are string literals allowing embedded expressions. You can use multi-line strings and string interpolation features with them. They were called "template strings" in prior editions of the ES2015 specification.

string text ${expression} string text

所以你的情況變得

var Template = 'Welcome to the world baby ${namelist[0].baby.name}'