finish JavaScript and OOP sections for QA

This commit is contained in:
Quincy Larson 2015-10-28 01:15:54 -07:00
parent 419f6507d0
commit eef1c5136a
2 changed files with 94 additions and 62 deletions

View File

@ -955,7 +955,6 @@
" // Only change code above this line.", " // Only change code above this line.",
"}", "}",
"", "",
"// We use this function to show you the value of your variable in your output box.",
"(function(){return myFunction();})();" "(function(){return myFunction();})();"
], ],
"type": "waypoint", "type": "waypoint",
@ -965,8 +964,8 @@
"id": "cf1111c1c12feddfaeb1bdef", "id": "cf1111c1c12feddfaeb1bdef",
"title": "Generate Random Whole Numbers with JavaScript", "title": "Generate Random Whole Numbers with JavaScript",
"description": [ "description": [
"It's great that we can create random decimal numbers, but it's even more useful if we use it to generate random whole numbers.", "It's great that we can generate random decimal numbers, but it's even more useful if we use it to generate random whole numbers.",
"First, let's use <code>Math.random()</code> to create a random decimal.", "First, let's use <code>Math.random()</code> to generate a random decimal.",
"Then let's multiply this random decimal by 20.", "Then let's multiply this random decimal by 20.",
"Finally, let's use another function, <code>Math.floor()</code> to round the number down to its nearest whole number.", "Finally, let's use another function, <code>Math.floor()</code> to round the number down to its nearest whole number.",
"This technique will gives us a whole number between 0 and 19.", "This technique will gives us a whole number between 0 and 19.",
@ -974,11 +973,11 @@
"Putting everything together, this is what our code looks like:", "Putting everything together, this is what our code looks like:",
"<code>Math.floor(Math.random() * 20);</code>", "<code>Math.floor(Math.random() * 20);</code>",
"See how <code>Math.floor</code> takes <code>(Math.random() * 20)</code> as its argument? That's right - you can pass a function to another function as an argument." "See how <code>Math.floor</code> takes <code>(Math.random() * 20)</code> as its argument? That's right - you can pass a function to another function as an argument."
"Let's use this technique to create and return a random whole number between 0 and 9." "Let's use this technique to generate and return a random whole number between 0 and 9."
], ],
"tests": [ "tests": [
"assert(typeof(myFunction()) === \"number\", 'message: The result of <code>myFunction</code> should be a number.');", "assert(typeof(myFunction()) === \"number\", 'message: The result of <code>myFunction</code> should be a number.');",
"assert(editor.getValue().match(/Math.random/g), 'message: You should be using Math.random to create a random number.');", "assert(editor.getValue().match(/Math.random/g), 'message: You should be using Math.random to generate a random number.');",
"assert(editor.getValue().match(/\\(\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\*\\s*?10\\s*?\\)/g) || editor.getValue().match(/\\(\\s*?10\\s*?\\*\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\)/g), 'message: You should have multiplied the result of <code>Math.random</code> by 10 to make it a number that is between zero and nine.');", "assert(editor.getValue().match(/\\(\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\*\\s*?10\\s*?\\)/g) || editor.getValue().match(/\\(\\s*?10\\s*?\\*\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\)/g), 'message: You should have multiplied the result of <code>Math.random</code> by 10 to make it a number that is between zero and nine.');",
"assert(editor.getValue().match(/Math.floor/g), 'message: You should use <code>Math.floor</code> to remove the decimal part of the number.');" "assert(editor.getValue().match(/Math.floor/g), 'message: You should use <code>Math.floor</code> to remove the decimal part of the number.');"
], ],
@ -994,7 +993,6 @@
" // Only change code above this line.", " // Only change code above this line.",
"}", "}",
"", "",
"// We use this function to show you the value of your variable in your output box.",
"(function(){return myFunction();})();" "(function(){return myFunction();})();"
], ],
"type": "waypoint", "type": "waypoint",
@ -1004,28 +1002,42 @@
"id": "cf1111c1c12feddfaeb2bdef", "id": "cf1111c1c12feddfaeb2bdef",
"title": "Generate Random Whole Numbers within a Range", "title": "Generate Random Whole Numbers within a Range",
"description": [ "description": [
"We can use a certain mathematical expression to get a random number between two numbers.", "Instead of generating a random number between zero and a given number like we did before, we can generate a random number that falls within a range of two specific numbers.",
"To do this, we'll define a minimum number <code>min</code> and a maximum number <code>max</code>."
"Here's the formula we'll use. Take a moment to read and try to understand what this code is doing.",
"<code>Math.floor(Math.random() * (max - min + 1)) + min</code>", "<code>Math.floor(Math.random() * (max - min + 1)) + min</code>",
"By using this, we can control the output of a random number." "Define two variables: <code>myMin</code> and </code>myMax</code>, and set them both equal to numbers.",
"Then create a function called <code>myFunction</code> that returns a random number that's greater than or equal to <code>myMin</code>, and is less than <code>myMax</code>."
], ],
"tests": [ "tests": [
"assert(myFunction() >= min, 'message: The random number generated by <code>myFunction</code> should be greater than or equal to the minimum number.');", "assert(myFunction() >= myMin, 'message: The random number generated by <code>myFunction</code> should be greater than or equal to your minimum number, <code>myMin</code>.');",
"assert(myFunction() <= max, 'message: The random number generated by <code>myFunction</code> should be less than or equal to the maximum number.');", "assert(myFunction() <= myMax, 'message: The random number generated by <code>myFunction</code> should be less than or equal to your maximum number, <code>myMax</code>.');",
"assert(myFunction() % 1 === 0 , 'message: The random number generated by <code>myFunction</code> should be an integer, not a decimal.');", "assert(myFunction() % 1 === 0 , 'message: The random number generated by <code>myFunction</code> should be an integer, not a decimal.');",
"assert((function(){if(editor.getValue().match(/max/g).length >= 3 && editor.getValue().match(/min/g).length >= 4 && editor.getValue().match(/Math.floor/g) && editor.getValue().match(/Math.random/g)){return true;}else{return false;}})(), 'message: You should be using the function given in the description to calculate the random in number in a range.');" "assert((function(){if(editor.getValue().match(/myMax/g).length >= 3 && editor.getValue().match(/myMin/g).length >= 4 && editor.getValue().match(/Math.floor/g) && editor.getValue().match(/Math.random/g)){return true;}else{return false;}})(), 'message: You should be using a function called <code>myFunction()</code> to calculate your random number in your range.');"
], ],
"challengeSeed": [ "challengeSeed": [
"var min = 1;", "var ourMin = 1;",
"var max = 9;", "",
"function myFunction() {", "var ourMax = 9;",
"",
"function ourFunction() {",
"",
" return Math.floor(Math.random() * (ourMax - ourMin + 1)) + ourMin;",
"",
"}",
"", "",
" // Only change code below this line.", " // Only change code below this line.",
"", "",
" return Math.random();",
"", "",
"",
"",
"",
"",
"",
"",
"",
"// Only change code above this line.", "// Only change code above this line.",
"", "",
"}",
"", "",
"(function(){return myFunction();})();" "(function(){return myFunction();})();"
], ],
@ -1039,7 +1051,7 @@
"We can use <code>if</code> statements in JavaScript to only execute code if a certain condition is met.", "We can use <code>if</code> statements in JavaScript to only execute code if a certain condition is met.",
"<code>if</code> statements require some sort of boolean condition to evaluate.", "<code>if</code> statements require some sort of boolean condition to evaluate.",
"For example:", "For example:",
"<code> if (1 === 2) {</code>", "<code>if (1 === 2) {</code>",
"<code>&thinsp;&thinsp;return true;</code>", "<code>&thinsp;&thinsp;return true;</code>",
"<code>} else {</code>", "<code>} else {</code>",
"<code>&thinsp;&thinsp;return false;</code>", "<code>&thinsp;&thinsp;return false;</code>",
@ -1056,16 +1068,15 @@
"challengeSeed": [ "challengeSeed": [
"var flip = Math.floor(Math.random() * (1 - 0 + 1)) + 0;", "var flip = Math.floor(Math.random() * (1 - 0 + 1)) + 0;",
"function myFunction(){", "function myFunction(){",
" // Create an if-else statement here to return \"heads\" if flip is 0. Otherwise return \"tails\".",
"", "",
" // Only change code below this line.", " // Only change code below this line.",
"", "",
"", "",
"", "",
" // Only change code above this line.", " // Only change code above this line.",
"",
"}", "}",
"", "",
"// We use this function to show you the value of your variable in your output box.",
"var result = myFunction();if(typeof(flip) !== \"undefined\" && typeof(flip) === \"number\" && typeof(result) !== \"undefined\" && typeof(result) === \"string\"){(function(y,z){return 'flip = ' + y.toString() + ', text = ' + z;})(flip, result);}" "var result = myFunction();if(typeof(flip) !== \"undefined\" && typeof(flip) === \"number\" && typeof(result) !== \"undefined\" && typeof(result) === \"string\"){(function(y,z){return 'flip = ' + y.toString() + ', text = ' + z;})(flip, result);}"
], ],
"type": "waypoint", "type": "waypoint",
@ -1082,22 +1093,24 @@
"<code>g</code> means that we want to search the entire string for this pattern instead of just the first match.", "<code>g</code> means that we want to search the entire string for this pattern instead of just the first match.",
"<code>i</code> means that we want to ignore the case (uppercase or lowercase) when searching for the pattern.", "<code>i</code> means that we want to ignore the case (uppercase or lowercase) when searching for the pattern.",
"<code>Regular expressions</code> are written by surrounding the pattern with <code>/</code> symbols.", "<code>Regular expressions</code> are written by surrounding the pattern with <code>/</code> symbols.",
"Let's try selecting all the occurrences of the word <code>and</code> in the string <code>Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it</code>. We can do this by replacing the <code>.</code> part of our regular expression with the current <code>regular expression</code> with the word <code>and</code>." "Let's try selecting all the occurrences of the word <code>and</code> in the string <code>Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it</code>.",
"We can do this by replacing the <code>.</code> part of our regular expression with the current <code>regular expression</code> with the word <code>and</code>."
], ],
"tests": [ "tests": [
"assert(test==2, 'message: Your <code>regular expression</code> should find two occurrences of the word <code>and</code>.');", "assert(test==2, 'message: Your <code>regular expression</code> should find two occurrences of the word <code>and</code>.');",
"assert(editor.getValue().match(/\\/and\\/gi/), 'message: You should have used <code>regular expressions</code> to find the word <code>and</code>.');" "assert(editor.getValue().match(/\\/and\\/gi/), 'message: Use <code>regular expressions</code> to find the word <code>and</code> in <code>testString</code>.');"
], ],
"challengeSeed": [ "challengeSeed": [
"var test = (function() {", "var test = (function() {",
" var testString = \"Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it.\";", " var testString = \"Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it.\";",
" var expressionToGetSoftware = /software/gi;", " var expressionToGetSoftware = /software/gi;",
"",
" // Only change code below this line.", " // Only change code below this line.",
"", "",
" var expression = /./gi;", " var expression = /./gi;",
"", "",
" // Only change code above this line.", " // Only change code above this line.",
" // We use this function to show you the value of your variable in your output box.", "",
" return testString.match(expression).length;", " return testString.match(expression).length;",
"})();(function(){return test;})();" "})();(function(){return test;})();"
], ],
@ -1115,11 +1128,12 @@
"Use the <code>\\d</code> selector to select the number of numbers in the string, allowing for the possibility of multi-digit numbers." "Use the <code>\\d</code> selector to select the number of numbers in the string, allowing for the possibility of multi-digit numbers."
], ],
"tests": [ "tests": [
"assert(test === 2, 'message: Your RegEx should have found two numbers in the <code>testString</code>.');", "assert(editor.getValue().match(/\\/\\\\d\\+\\//g), 'message: Use the <code>/\\d+/g</code> regular expression to find the numbers in <code>testString</code>.');",
"assert(editor.getValue().match(/\\/\\\\d\\+\\//g), 'message: You should be using the following expression <code>/\\d+/g</code> to find the numbers in the <code>testString</code>.');" "assert(test === 2, 'message: Your regular expression should find two numbers in <code>testString</code>.');"
], ],
"challengeSeed": [ "challengeSeed": [
"var test = (function() {", "var test = (function() {",
"",
" var testString = \"There are 3 cats but 4 dogs.\";", " var testString = \"There are 3 cats but 4 dogs.\";",
"", "",
" // Only change code below this line.", " // Only change code below this line.",
@ -1127,8 +1141,9 @@
" var expression = /.+/g;", " var expression = /.+/g;",
"", "",
" // Only change code above this line.", " // Only change code above this line.",
" // We use this function to show you the value of your variable in your output box.", "",
" return testString.match(expression).length;", " return testString.match(expression).length;",
"",
"})();(function(){return test;})();" "})();(function(){return test;})();"
], ],
"type": "waypoint", "type": "waypoint",
@ -1138,15 +1153,15 @@
"id": "cf1111c1c12feddfaeb8bdef", "id": "cf1111c1c12feddfaeb8bdef",
"title": "Find Whitespace with Regular Expressions", "title": "Find Whitespace with Regular Expressions",
"description": [ "description": [
"We can also use selectors like <code>\\s</code> to find whitespace in a string.", "We can also use regular expression selectors like <code>\\s</code> to find whitespace in a string.",
"The whitespace characters are <code>\" \"</code> (space), <code>\\r</code> (carriage return), <code>\\n</code> (newline), <code>\\t</code> (tab), and <code>\\f</code> (form feed).", "The whitespace characters are <code>\" \"</code> (space), <code>\\r</code> (the carriage return), <code>\\n</code> (newline), <code>\\t</code> (tab), and <code>\\f</code> (the form feed).",
"It is used like this:", "The whitespace regular expression looks like this:",
"<code>/\\s+/g</code>", "<code>/\\s+/g</code>",
"Select all the whitespace characters in the sentence string." "Use it to select all the whitespace characters in the sentence string."
], ],
"tests": [ "tests": [
"assert(test === 7, 'message: Your RegEx should have found seven spaces in the <code>testString</code>.');", "assert(editor.getValue().match(/\\/\\\\s\\+\\//g), 'message: Use the <code>/\\s+/g</code> regular expression to find the spaces in <code>testString</code>.');",
"assert(editor.getValue().match(/\\/\\\\s\\+\\//g), 'message: You should be using the following expression <code>/\\s+/g</code> to find the spaces in the <code>testString</code>.');" "assert(test === 7, 'message: Your regular expression should find seven spaces in <code>testString</code>.');"
], ],
"challengeSeed": [ "challengeSeed": [
"var test = (function(){", "var test = (function(){",
@ -1157,8 +1172,9 @@
" var expression = /.+/g;", " var expression = /.+/g;",
"", "",
" // Only change code above this line.", " // Only change code above this line.",
" // We use this function to show you the value of your variable in your output box.", "",
" return testString.match(expression).length;", " return testString.match(expression).length;",
"",
"})();(function(){return test;})();" "})();(function(){return test;})();"
], ],
"type": "waypoint", "type": "waypoint",
@ -1168,12 +1184,13 @@
"id": "cf1111c1c13feddfaeb3bdef", "id": "cf1111c1c13feddfaeb3bdef",
"title": "Invert Regular Expression Matches with JavaScript", "title": "Invert Regular Expression Matches with JavaScript",
"description": [ "description": [
"Use <code>/\\S/g</code> to match everything that isn't a space in the string.", "You can invert any match by using the uppercase version of the regular expression selector.",
"You can invert any match by using the uppercase version of the selector <code>\\s</code> versus <code>\\S</code> for example." "For example, <code>\\s</code> will match any whitespace, and <code>\\S</code> will match anything that isn't whitespace.",
"Use <code>/\\S/g</code> to count the number of non-whitespace characters in <code>testString</code>.",
], ],
"tests": [ "tests": [
"assert(test === 49, 'message: Your RegEx should have found forty nine non-space characters in the <code>testString</code>.');", "assert(editor.getValue().match(/\\/\\\\S\\/g/g), 'message: Use the <code>/\\S/g</code> regular expression to find non-space characters in <code>testString</code>.');",
"assert(editor.getValue().match(/\\/\\\\S\\/g/g), 'message: You should be using the following expression <code>/\\S/g</code> to find non-space characters in the <code>testString</code>.');" "assert(test === 49, 'message: Your regular expression should find forty nine non-space characters in the <code>testString</code>.');"
], ],
"challengeSeed": [ "challengeSeed": [
"var test = (function(){", "var test = (function(){",
@ -1184,7 +1201,7 @@
" var expression = /./g;", " var expression = /./g;",
"", "",
" // Only change code above this line.", " // Only change code above this line.",
" // We use this function to show you the value of your variable in your output box.", "",
" return testString.match(expression).length;", " return testString.match(expression).length;",
"})();(function(){return test;})();" "})();(function(){return test;})();"
], ],

View File

@ -15,7 +15,6 @@
{ {
"id":"cf1111c1c15feddfaeb1bdef", "id":"cf1111c1c15feddfaeb1bdef",
"title": "Declare JavaScript Objects as Variables", "title": "Declare JavaScript Objects as Variables",
"difficulty":0,
"description":[ "description":[
"Before we dive into Object Oriented Programming, let's revisit JavaScript objects.", "Before we dive into Object Oriented Programming, let's revisit JavaScript objects.",
"Give your <code>motorBike</code> object a <code>wheels</code>, <code>engines</code> and <code>seats</code> attribute and set them to numbers." "Give your <code>motorBike</code> object a <code>wheels</code>, <code>engines</code> and <code>seats</code> attribute and set them to numbers."
@ -26,21 +25,20 @@
"assert(typeof(motorBike.seats) === 'number', 'message: <code>motorBike</code> should have a <code>seats</code> attribute set to a number.');" "assert(typeof(motorBike.seats) === 'number', 'message: <code>motorBike</code> should have a <code>seats</code> attribute set to a number.');"
], ],
"challengeSeed":[ "challengeSeed":[
"//Here is a sample Object",
"var car = {", "var car = {",
" \"wheels\":4,", " \"wheels\":4,",
" \"engines\":1,", " \"engines\":1,",
" \"seats\":5", " \"seats\":5",
"};", "};",
"", "",
"//Now Let's make a similar Object called motorBike",
"//Give it two wheels, one engine and one seat",
"var motorBike = {", "var motorBike = {",
"",
" // Only change code below this line.", " // Only change code below this line.",
"", "",
"", "",
"", "",
" // Only change code above this line.", " // Only change code above this line.",
"",
"};", "};",
"", "",
"(function() {return JSON.stringify(motorBike);})();" "(function() {return JSON.stringify(motorBike);})();"
@ -52,9 +50,14 @@
{ {
"id":"cf1111c1c15feddfaeb2bdef", "id":"cf1111c1c15feddfaeb2bdef",
"title": "Construct JavaScript Objects with Functions", "title": "Construct JavaScript Objects with Functions",
"difficulty":0,
"description":[ "description":[
"We are also able to create objects using <code>constructor</code> functions.", "We are also able to create objects using <code>constructor</code> functions.",
"Here's an example of a constructor function:",
"<code>var Car = function() {</code>",
"<code>&thinsp;&thinsp;this.wheels = 4;</code>",
"<code>&thinsp;&thinsp;this.engines = 1;</code>",
"<code>&thinsp;&thinsp;this.seats = 1;</code>",
"<code>};</code>",
"Give your <code>myMotorBike</code> object a <code>wheels</code>, <code>engines</code> and <code>seats</code> attribute and set them to numbers." "Give your <code>myMotorBike</code> object a <code>wheels</code>, <code>engines</code> and <code>seats</code> attribute and set them to numbers."
], ],
"tests":[ "tests":[
@ -63,7 +66,6 @@
"assert(typeof((new MotorBike()).seats) === 'number', 'message: <code>myMotorBike</code> should have a <code>seats</code> attribute set to a number.');" "assert(typeof((new MotorBike()).seats) === 'number', 'message: <code>myMotorBike</code> should have a <code>seats</code> attribute set to a number.');"
], ],
"challengeSeed":[ "challengeSeed":[
"// Let's add the properties engines and seats to the car in the same way that the property wheels has been added below. They should both be numbers.",
"var Car = function() {", "var Car = function() {",
" this.wheels = 4;", " this.wheels = 4;",
" this.engines = 1;", " this.engines = 1;",
@ -73,6 +75,7 @@
"var myCar = new Car();", "var myCar = new Car();",
"", "",
"// Only change code below this line.", "// Only change code below this line.",
"",
"var MotorBike = function() {", "var MotorBike = function() {",
"", "",
"", "",
@ -80,6 +83,7 @@
"};", "};",
"", "",
"var myMotorBike = new MotorBike();", "var myMotorBike = new MotorBike();",
"",
"// Only change code above this line.", "// Only change code above this line.",
"", "",
"(function() {return JSON.stringify(myMotorBike);})();" "(function() {return JSON.stringify(myMotorBike);})();"
@ -90,12 +94,12 @@
{ {
"id":"cf1111c1c15feddfaeb3bdef", "id":"cf1111c1c15feddfaeb3bdef",
"title":"Make Object Properties Private", "title":"Make Object Properties Private",
"difficulty":0,
"description":[ "description":[
"Objects have their own attributes, called <code>properties</code>, and their own functions, called <code>methods</code>.", "Objects have their own attributes, called <code>properties</code>, and their own functions, called <code>methods</code>.",
"In the previous challenge, we used the <code>this</code> keyword to reference <code>public properties</code> and <code>public methods</code> of the current object.", "In the previous challenge, we used the <code>this</code> keyword to reference <code>public properties</code> and <code>public methods</code> of the current object.",
"We can also create <code>private properties</code> and <code>private methods</code>, which aren't accessible from outside the object.", "We can also create <code>private properties</code> and <code>private methods</code>, which aren't accessible from outside the object.",
"To do this, we omit the word <code>this</code> from the <code>property</code> or <code>method</code> declaration.", "To do this, we omit the word <code>this</code> from the <code>property</code> or <code>method</code> declaration.",
"Let's create an object with two functions. One attached as a property and one not.",
"See if you can keep <code>myBike.speed</code> and <code>myBike.addUnit</code> private, while making <code>myBike.getSpeed</code> publicly accessible." "See if you can keep <code>myBike.speed</code> and <code>myBike.addUnit</code> private, while making <code>myBike.getSpeed</code> publicly accessible."
], ],
"tests":[ "tests":[
@ -104,7 +108,6 @@
"assert(typeof(myBike.addUnit) === 'undefined', 'message: <code>myBike.addUnit</code> should remain undefined.');" "assert(typeof(myBike.addUnit) === 'undefined', 'message: <code>myBike.addUnit</code> should remain undefined.');"
], ],
"challengeSeed":[ "challengeSeed":[
"//Let's create an object with two functions. One attached as a property and one not.",
"var Car = function() {", "var Car = function() {",
" this.gear = 1;", " this.gear = 1;",
" function addStyle(styleMe){", " function addStyle(styleMe){",
@ -116,7 +119,9 @@
"};", "};",
"", "",
"var Bike = function() {", "var Bike = function() {",
"",
" // Only change code below this line.", " // Only change code below this line.",
"",
" this.speed = 100;", " this.speed = 100;",
" function addUnit(value) {", " function addUnit(value) {",
" return value + \"KM/H\";", " return value + \"KM/H\";",
@ -125,11 +130,13 @@
" getSpeed = function () {", " getSpeed = function () {",
" return addUnit(speed);", " return addUnit(speed);",
" };", " };",
" ", "",
"};", "};",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
"",
"var myCar = new Car();", "var myCar = new Car();",
"",
"var myBike = new Bike();", "var myBike = new Bike();",
"", "",
"if(myBike.hasOwnProperty('getSpeed')){(function() {return JSON.stringify(myBike.getSpeed());})();};" "if(myBike.hasOwnProperty('getSpeed')){(function() {return JSON.stringify(myBike.getSpeed());})();};"
@ -140,7 +147,6 @@
{ {
"id":"cf1111c1c15feddfaeb4bdef", "id":"cf1111c1c15feddfaeb4bdef",
"title":"Make Instances of Objects with a Constructor Function", "title":"Make Instances of Objects with a Constructor Function",
"difficulty":0,
"description":[ "description":[
"Sometimes you'll want to be able to easily create similar objects.", "Sometimes you'll want to be able to easily create similar objects.",
"Objects have their own attributes, called <code>properties</code>, and their own functions, called <code>methods</code>.", "Objects have their own attributes, called <code>properties</code>, and their own functions, called <code>methods</code>.",
@ -164,7 +170,6 @@
"// Only change code below this line.", "// Only change code below this line.",
"var myCar = new Car();", "var myCar = new Car();",
"", "",
"//Add the property \"engines\" to myCar, and make it a number.",
"", "",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
@ -176,7 +181,6 @@
{ {
"id":"cf1111c1c15feddfaeb7bdef", "id":"cf1111c1c15feddfaeb7bdef",
"title":"Iterate over Arrays with .map", "title":"Iterate over Arrays with .map",
"difficulty":0,
"description":[ "description":[
"The map method is one of the easiest ways to iterate through an array or object there is. Let's use it now.", "The map method is one of the easiest ways to iterate through an array or object there is. Let's use it now.",
"<code>array = array.map(function(val){</code>", "<code>array = array.map(function(val){</code>",
@ -191,13 +195,14 @@
"assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\]/gi), 'message: You should only modify the array with <code>.map</code>.');" "assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\]/gi), 'message: You should only modify the array with <code>.map</code>.');"
], ],
"challengeSeed":[ "challengeSeed":[
"//Use map to add three to each value in the array",
"var array = [1,2,3,4,5];", "var array = [1,2,3,4,5];",
"",
"// Only change code below this line.", "// Only change code below this line.",
"", "",
"", "",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return array;})();" "(function() {return array;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -209,7 +214,6 @@
{ {
"id":"cf1111c1c15feddfaeb8bdef", "id":"cf1111c1c15feddfaeb8bdef",
"title":"Condense arrays with .reduce", "title":"Condense arrays with .reduce",
"difficulty":0,
"description":[ "description":[
"Reduce can be useful for condensing an array of numbers into one value.", "Reduce can be useful for condensing an array of numbers into one value.",
"<code>var singleVal = array.reduce(function(previousVal, currentVal){</code>", "<code>var singleVal = array.reduce(function(previousVal, currentVal){</code>",
@ -223,12 +227,15 @@
], ],
"challengeSeed":[ "challengeSeed":[
"var array = [4,5,6,7,8];", "var array = [4,5,6,7,8];",
"",
"var singleVal = 0;", "var singleVal = 0;",
"",
"// Only change code below this line.", "// Only change code below this line.",
"", "",
"", "",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return singleVal;})();" "(function() {return singleVal;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -240,7 +247,6 @@
{ {
"id":"cf1111c1c15feddfaeb9bdef", "id":"cf1111c1c15feddfaeb9bdef",
"title":"Filter Arrays with .filter", "title":"Filter Arrays with .filter",
"difficulty":0,
"description":[ "description":[
"Filter is a useful method that can filter out values that don't match a certain criteria", "Filter is a useful method that can filter out values that don't match a certain criteria",
"Let's remove all the values greater than five", "Let's remove all the values greater than five",
@ -255,11 +261,13 @@
], ],
"challengeSeed":[ "challengeSeed":[
"var array = [1,2,3,4,5,6,7,8,9,10];", "var array = [1,2,3,4,5,6,7,8,9,10];",
" // Only change code below this line.", "",
"// Only change code below this line.",
"", "",
"", "",
"", "",
" // Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return array;})();" "(function() {return array;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -271,7 +279,6 @@
{ {
"id":"cf1111c1c16feddfaeb1bdef", "id":"cf1111c1c16feddfaeb1bdef",
"title": "Sort Arrays with .sort", "title": "Sort Arrays with .sort",
"difficulty":0,
"description":[ "description":[
"You can use the method <code>sort</code> to easily sort the values in the array alphabetically or numerically.", "You can use the method <code>sort</code> to easily sort the values in the array alphabetically or numerically.",
"<code>var array = [1, 3, 2];</code>", "<code>var array = [1, 3, 2];</code>",
@ -286,11 +293,13 @@
], ],
"challengeSeed":[ "challengeSeed":[
"var array = ['beta', 'alpha', 'charlie'];", "var array = ['beta', 'alpha', 'charlie'];",
"",
"// Only change code below this line.", "// Only change code below this line.",
"", "",
"", "",
"", "",
" // Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return array;})();" "(function() {return array;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -313,11 +322,13 @@
], ],
"challengeSeed": [ "challengeSeed": [
"var array = [1,2,3,4,5,6,7];", "var array = [1,2,3,4,5,6,7];",
" // Only change code below this line.", "",
"// Only change code below this line.",
"", "",
"", "",
"", "",
" // Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return array;})();" "(function() {return array;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -343,11 +354,13 @@
"var array = [1,2,3];", "var array = [1,2,3];",
"", "",
"var concatMe = [4,5,6];", "var concatMe = [4,5,6];",
"",
"// Only change code below this line.", "// Only change code below this line.",
"", "",
"", "",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return array;})();" "(function() {return array;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -359,7 +372,6 @@
{ {
"id":"cf1111c1c16feddfaeb4bdef", "id":"cf1111c1c16feddfaeb4bdef",
"title":"Split Strings with .split", "title":"Split Strings with .split",
"difficulty":0,
"description":[ "description":[
"You can use the <code>.split()</code> method to split a string into an array.", "You can use the <code>.split()</code> method to split a string into an array.",
"<code>.split()</code> uses the argument you pass in as a delimiter to determine which points the string should be split at.", "<code>.split()</code> uses the argument you pass in as a delimiter to determine which points the string should be split at.",
@ -367,16 +379,18 @@
"Use <code>.split()</code> to create an array of words from <code>string</code> and assign it to <code>array</code>." "Use <code>.split()</code> to create an array of words from <code>string</code> and assign it to <code>array</code>."
], ],
"tests":[ "tests":[
"assert(typeof(array) === 'object' && array.length === 5, 'message: You should split the string by its spaces.');", "assert(/\\.split\\(/gi, 'message: You should use the split method on the string.');",
"assert(/\\.split\\(/gi, 'message: You should use the split method on the string.');" "assert(typeof(array) === 'object' && array.length === 5, 'message: You should split the string by its spaces.');"
], ],
"challengeSeed":[ "challengeSeed":[
"var string = \"Split me into an array\";", "var string = \"Split me into an array\";",
"",
"// Only change code below this line.", "// Only change code below this line.",
"", "",
"var array = string;", "var array = string;",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return array;})();" "(function() {return array;})();"
], ],
"MDNlinks":[ "MDNlinks":[
@ -388,7 +402,6 @@
{ {
"id":"cf1111c1c16feddfaeb5bdef", "id":"cf1111c1c16feddfaeb5bdef",
"title":"Join Strings with .join", "title":"Join Strings with .join",
"difficulty":0,
"description":[ "description":[
"We can use the <code>.join()</code> method to join each element in an array into a string separated by whatever delimiter you provide as an argument to the join operation.", "We can use the <code>.join()</code> method to join each element in an array into a string separated by whatever delimiter you provide as an argument to the join operation.",
"<code>var joinMe = joinMe.join(\" \");</code>", "<code>var joinMe = joinMe.join(\" \");</code>",
@ -400,11 +413,13 @@
], ],
"challengeSeed":[ "challengeSeed":[
"var joinMe = [\"Split\",\"me\",\"into\",\"an\",\"array\"];", "var joinMe = [\"Split\",\"me\",\"into\",\"an\",\"array\"];",
"",
"// Only change code below this line.", "// Only change code below this line.",
"", "",
"joinMe = joinMe;", "joinMe = joinMe;",
"", "",
"// Only change code above this line.", "// Only change code above this line.",
"",
"(function() {return joinMe;})();" "(function() {return joinMe;})();"
], ],
"MDNlinks":[ "MDNlinks":[