2015-11-29 3 views
0

реализации внешних Я пытаюсь сделать что-то вроде ниже, но объединить функции имеет проблемы с линиейNode объединяет значения расслоение плотной основной

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 :)"; 

Filename: 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% "," Hi "+ values.first_name +"! Спасибо за завершение этого вызова кода :) ");' – IronGeek

+0

Я пробовал это. Но это тоже неправильно. – kushalvm

+0

Это работает для меня: 'content.replace ("% first_name% ", values.first_name);' – Ziki

ответ

1

Ваша функция слияния не является хорошей, она делает странную вещь и, несомненно, вернет странную строку, если вы передадите другой шаблон. Вы заменяете всю строку ввода строкой «Hi ....», но с первым именем, вставленным так в конце, ваша функция слишком специфична и не может обрабатывать дополнительные параметры или другой шаблон/строку.

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

Это тоже работает для меня. 'for (ключ ключа в значениях) { content = content.replace ("% "+ ключ +"% ", значения [ключ]); } ' – kushalvm

+0

Я получил ваше решение. Благодаря ! – kushalvm

Смежные вопросы