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

Why doesn't my implementation of replace satisfy the test question?

I'm not sure why, I checked my syntax (though I could have a blind spot) but I'm not replacing an array nor am I reading from a file, so none of that code would apply to this example. This is just an implementation of the replace method, right?

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) {

  content = content.replace("%first_name%", values.first_name);

  return content;
}


module.exports.merge = merge;

I thought maybe because I hardcoded "first_name" in utilities, it wasn't great, I'd have to edit it for any new parameter.

so I did this...

function merge(content, values) {

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

  module.exports.merge = merge;

That way, if there were any placeholders in the string, along as there's a value for it in the mailValues object, it would be swapped out with the actual value.

It also passes in my local environment, but doesn't satisfy the test.

I'm at a loss.

I check this in my local environment and checks out. I don't get why it doesn't pass the test.

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

if (mergedContent === "Hi Janet! Thanks for completing this code challenge :)") {
console.log(mergedContent);
};

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

I even put an if statement in there to verify that I wasn't seeing things.

The hint says that "something is off with my implementation" but I'm not sure how else I'm supposed to implement this.

1 Answer

Ugh. Nevermind, I figured it out.