Project 2-Javascript-Ptit
Project 2-Javascript-Ptit
Setup
Although this project has you run code in your browser, you need to have Node.js installed on
your system to run the code quality checker. If you haven't already installed Node.js and the npm
package manager, follow the installation instructions on the Node.js website.
Once you have Node.js installed, create a directory project2 and extract the contents of the
project2.zip file into the directory. The zip file contains the files test-project2.html and test-
project2.js that act as a testing framework for the code you write in this project.
You can fetch the code quality tool (also known as a "linter"), ESLint, by running the following
command in the project2 directory:
npm install
This will fetch ESLint into the node_modules subdirectory. You will be able to run it on all the
JavaScript files in project2 directory by running the command:
The code you submit should start with "use strict"; in each JavaScript file and running
ESLint using the command above should not output any errors or warnings. Any errors or
warnings will be used to deduct style points.
To run the assignment, you have two options:
1. In your browser: Open the file test-project2.html in your browser. The web page will
load the JavaScript code you have written and run a few tests.
2. In Node.js: You can also run the tests without a browser using the command
npm test
We recommend using the browser for development as the debugging environment is much
better.
Note: These tests don't cover all the edge cases. They are there to help guide you and let you
know when you have the basic functionality. It is your responsiblity to handle everything stated
in the following specs that aren't explicitly tested in the test file we give you.
In this project we ask you to write or modify some JavaScript functions. The problems in this
assignment are of a practical nature and functionality you develop will be useful in completing
later class projects. Given the availability of JavaScript libraries to solve or help solve pretty
much any JavaScript tasks you would be assigned, it is likely you could solve these with a couple
of lines to call some library routine. Since the goal of the project is to learn JavaScript, we forbid
you to use any JavaScript libraries in your solutions. Functions built-in to JavaScript, like
Arrays and Date objects, are acceptable.
The arrayFilterer function should return itself unless the filterCriteria parameter is not
specified in which case it should return the currentArray. It must be possible to have
multiple arrayFilterer functions operating at the same time.
The following code shows how one might make use of the functions you define in this problem:
// Call arrayFilterer1 (with a callback function) to filter out all the numbe
rs
// not equal to 2.
arrayFilterer1(function (elem) {
return elem !== 2; // check if element is not equal to 2
}, function (currentArray) {
// 'this' within the callback function should refer to originalArray which
is [1, 2, 3]
console.log(this); // prints [1, 2, 3]
console.log(currentArray); // prints [1, 3]
});
The following code shows how one might make use of the functions you define in this problem:
var template = "My favorite month is {{month}} but not the day {{day}} or the
year {{year}}";
var dateTemplate = new TemplateProcessor(template);
assert(str === "My favorite month is July but not the day 1 or the year 2016"
);
assert(str === "My favorite month is but not the day 1 or the year 2016");