Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Build a Simple Dynamic Site with Node.js Creating a Basic Template Engine in Node.js A Simple Merge Utility

Marco Poletto
PLUS
Marco Poletto
Courses Plus Student 10,099 Points

I have a lot of difficult to understand what the task require

I don't know if I am wrong at all. I tried only to suppose the task because the three rows for me are too vague. I think my problem is in the second parameter. But if I put an object (like the task seems to ask) I've got a unexpected token, if I put a variable called in index.js obviuosly it doesn't work because it doesn't see the variable. Someone could help me?

index.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) {
  var content = content.replace("%first_name%", xxxxxxxxxxx);
  return content;
}


module.exports.merge = merge;

2 Answers

Emma Davis
Emma Davis
4,760 Points

You need to use a for loop so that you can grab the key and value passed in values to replace the placeholder in the content. You also need to get the key 'first_name' from the for loop and use it (with concatenation) within the replace, but to do so you are only looking for the matching key 'name', not specifying the key name literally.

function merge(content, values) {
  for (var key in values) {
      content = content.replace("%" + key + "%", values[key]);
  }
return content;
}

module.exports.merge = merge;
Marco Poletto
PLUS
Marco Poletto
Courses Plus Student 10,099 Points

Solved: I have simply forgot that I should use the loop.

for (var key in values) { content = content.replace("%" + key +"%", values[key]); }

I tought it was a common variable and not an object.