2015-11-29 55 views
0

我試圖做類似下面的,但合併功能與行的問題節點JS合併值基本實行

content = content.replace(content, "Hi" + values.first_name + "! Thanks for completing this code challenge :)");

文件名:app.js

var utilities = require("./utilities"); 

var mailValues = {}; 

mailValues.first_name = "Janet"; 

var emailTemplate = "Hi %first_name%! Thanks for completing this code challenge :)"; 

var mergedContent = utilities.merge(emailTemplate, mailValues); 

//mergedContent === "Hi Janet! Thanks for completing this code challenge :)"; 

文件名:utilities.js

function merge(content, values) { 

    content = content.replace(content, "Hi" + values.first_name + "! Thanks for completing this code challenge :)"); 
    return content; 
} 


module.exports.merge = merge; 
+1

我覺得有一個錯字在你的'合併()function'。這可能,應該已經'content = content.replace(「%first_name%」,「嗨」+ values.first_name +「!感謝您完成此代碼的挑戰:)」);' – IronGeek

+0

我試過這個。但這也不正確。 – kushalvm

+0

這工作對我來說:'content.replace(「%FIRST_NAME%」,values.first_name);' – Ziki

回答

1

你的合併函數不好,它做了一個奇怪的事情,如果你傳遞另一個模板,肯定會返回一個奇怪的字符串。你用「Hi ....」字符串替換了整個輸入字符串,但是最後插入了first_name,你的函數太具體了,不能處理額外的參數或另一個模板/字符串。

function merge(content, values) { 
 
    // loop over all the keys in the values object 
 
    Object.keys(values).forEach(function(key) { 
 
    // look for the key surrounded by % in the string 
 
    // and replace it by the value from values 
 
    content = content.replace('%' + key + '%', values[key]); 
 
    }); 
 
    return content; 
 
} 
 

 
var mailValues = {}; 
 
mailValues.first_name = "Janet"; 
 
mailValues.last_name = "Doe"; 
 
var emailTemplate = "Hi %first_name% %last_name%! Thanks for completing this code challenge :)"; 
 
var mergedContent = merge(emailTemplate, mailValues); 
 

 
document.write(mergedContent);

試 「運行的代碼片斷」 按鈕。

for ... in版本,信息,更好地使用以前的版本。

function merge(content, values) { 
 
    // loop over all the keys in the values object 
 
    for (var key in values) { 
 
    // look for the key surrounded by % in the string 
 
    // and replace it by the value from values 
 
    content = content.replace('%' + key + '%', values[key]); 
 
    } 
 
    return content; 
 
} 
 

 
var mailValues = {}; 
 
mailValues.first_name = "Janet"; 
 
mailValues.last_name = "Doe"; 
 
var emailTemplate = "Hi %first_name% %last_name%! Thanks for completing this code challenge :)"; 
 
var mergedContent = merge(emailTemplate, mailValues); 
 

 
document.write(mergedContent);

+0

它的工作。但你也可以用「for in」循環來做到這一點。請不要編輯這一個。至少我會學習這兩種方法。 – kushalvm

+0

這對我來說也適用。 '爲(在值VAR鍵){ 含量= content.replace( 「%」 +鍵+ 「%」,數值[鍵]); } ' – kushalvm

+0

我也有你的解決方案。謝謝 ! – kushalvm