Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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

Alex Ng
PLUS
Alex Ng
Courses Plus Student 10,900 Points

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.

Alex Ng
Alex Ng
Courses Plus Student 10,900 Points

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