Merge branch 'staging' into jquery
Conflicts: seed/challenges/basic-javascript.json seed/challenges/object-oriented-and-functional-programming.json
This commit is contained in:
commit
9275bd5076
@ -2,5 +2,49 @@
|
||||
"name": "Automated Testing and Debugging - Coming Soon",
|
||||
"order": 0.012,
|
||||
"challenges": [
|
||||
{
|
||||
"id":"cf1111c1c16feddfaeb6bdef",
|
||||
"title":"Using the Javascript console",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"The browser console is the best and easiest tool for debugging your scripts",
|
||||
"It can normally be access by pressing f12 in most browsers or right click > inspect element > console",
|
||||
"Let's print to this console using the console.log method",
|
||||
"<code>console.log('Hello world!')</code>"
|
||||
],
|
||||
"tests":[
|
||||
"assert(editor.getValue().match(/console\\.log\\(/gi), 'You should use the console.log method to ');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
""
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c16feddfaeb7bdef",
|
||||
"title":"Using typeof",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"typeof is a useful method that we can use to check the type of a variable",
|
||||
"One thing to be careful of is that an array has the type objects",
|
||||
"Try using each of these to see the types they have",
|
||||
"<code>console.log(typeof(\"\"));",
|
||||
"console.log(typeof(0));",
|
||||
"console.log(typeof([]));",
|
||||
"console.log(typeof({}));</code>"
|
||||
],
|
||||
"tests":[
|
||||
"assert(editor.getValue().match(/console\\.log\\(typeof\\(\"\"\\)\\);/gi), 'You should console.log the typeof a string');",
|
||||
"assert(editor.getValue().match(/console\\.log\\(typeof\\(0\\)\\);/gi), 'You should console.log the typeof a number');",
|
||||
"assert(editor.getValue().match(/console\\.log\\(typeof\\(\\[\\]\\)\\);/gi), 'You should console.log the typeof a array');",
|
||||
"assert(editor.getValue().match(/console\\.log\\(typeof\\(\\{\\}\\)\\);/gi), 'You should console.log the typeof a object');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
""
|
||||
],
|
||||
"challengeType":1
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -457,8 +457,7 @@
|
||||
"Once an array has been created we can access the data we have stored in them using indexes",
|
||||
"Indexes are written in the same way as bracket notation that we covered earlier",
|
||||
"Example:",
|
||||
"<code>",
|
||||
"var array = [1,2,3];",
|
||||
"<code>var array = [1,2,3];",
|
||||
"array[0];//equals 1",
|
||||
"var data = array[1];",
|
||||
"</code>",
|
||||
@ -1387,7 +1386,7 @@
|
||||
"Now we can detect a win let's get the slot machine to look like it works",
|
||||
"We're going to use the jQuery selector <code>$(\".slot\")</code> to select all of the slots",
|
||||
"Once they are all selected we can use bracket notation to access each individual one like this",
|
||||
"<code>$($(\".slot\")[0])</code>",
|
||||
"<code>$($(\".slot\")[0]).html(\"\")</code>",
|
||||
"This will grab the the first slot so that we can add the numbers we generate to them",
|
||||
"Use the above selector to display each number in the corresponding slot"
|
||||
],
|
||||
@ -1545,6 +1544,176 @@
|
||||
],
|
||||
"type": "waypoint",
|
||||
"challengeType": 0
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c11feddfaeb1bdff",
|
||||
"title": "Give your JavaScript Slot Machine some stylish images",
|
||||
"difficulty":"9.9901",
|
||||
"description":[
|
||||
"Now that we can detect when the player wins we are going to add an image to each slot depending on the random values we generate",
|
||||
"<code>$($('.slot')[0]).html('<img src = \"' + images[slotOne-1] + '\">');<code>"
|
||||
],
|
||||
"tests":[
|
||||
"assert(editor.match(/\\$\\(\\$\\(\\'\\.slot\\'\\)\\[\\d\\]\\)\\.html\\(\\'\\<img\\s?src\\s?=\\s?\"\\'\\s?\\+\\s?images\\[\\w+\\-1\\]\\s?\\+\\s?\\'\"\\>\\'\\);/gi) && editor.match(/\\$\\(\\$\\(\\'\\.slot\\'\\)\\[\\d\\]\\)\\.html\\(\\'\\<img\\s?src\\s?=\\s?\"\\'\\s?\\+\\s?images\\[\\w+\\-1\\]\\s?\\+\\s?\\'\"\\>\\'\\);/gi).length >= 3, 'Use the provided code three times. One for each slot');",
|
||||
"assert(editor.match(/slotOne/gi) && editor.match(/slotOne/gi).length >= 7, 'You should have used the slotOne value at least once');",
|
||||
"assert(editor.match(/slotTwo/gi) && editor.match(/slotTwo/gi).length >=8, 'You should have used the slotTwo value at least once');",
|
||||
"assert(editor.match(/slotThree/gi) && editor.match(/slotThree/gi).length >= 7, 'You should have used the slotThree value at least once');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"fccss",
|
||||
" function runSlots(){",
|
||||
" var slotOne;",
|
||||
" var slotTwo;",
|
||||
" var slotThree;",
|
||||
" ",
|
||||
" //Placeholder",
|
||||
" var images = ['https://www.evernote.com/l/AlxaOC8QrXlBjpTdGMe3mBwLN3Yjm-KB5yQB/image.png','https://www.evernote.com/l/AlyXbeIS8axEspbwXD8RzmsaCUIf10snmzgB/image.png','https://www.evernote.com/l/AlxMveeWtopKaajUmTVrnv92mqA_s2uzW-8B/image.png','https://www.evernote.com/l/AlyyRP_Kh_dCG7t8b4JRnwMNCa1JThI_5gQB/image.png', 'https://www.evernote.com/l/Alx64952qUxEhJnBteZvJgxib1qlwQcw9G0B/image.png'];",
|
||||
" ",
|
||||
" slotOne = Math.floor(Math.random() * (5 - 1 + 1)) + 1;",
|
||||
" slotTwo = Math.floor(Math.random() * (5 - 1 + 1)) + 1;",
|
||||
" slotThree = Math.floor(Math.random() * (5 - 1 + 1)) + 1;",
|
||||
" ",
|
||||
" $('.logger').html('');",
|
||||
" $('.logger').html('Not A Win')",
|
||||
" ",
|
||||
" /*Don't modify above here*/",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" /*Don't modify below here*/",
|
||||
" ",
|
||||
" if(slotOne != slotTwo || slotTwo != slotThree){",
|
||||
" return(null);",
|
||||
" }",
|
||||
" ",
|
||||
" if(slotOne !== undefined && slotTwo !== undefined && slotThree !== undefined){",
|
||||
" $('.logger').html(slotOne);",
|
||||
" $('.logger').append(' ' + slotTwo);",
|
||||
" $('.logger').append(' ' + slotThree);",
|
||||
" }",
|
||||
" ",
|
||||
" return([slotOne, slotTwo, slotThree]);",
|
||||
" }",
|
||||
"",
|
||||
" $(document).ready(function(){",
|
||||
" $('.go').click(function(){",
|
||||
" runSlots();",
|
||||
" });",
|
||||
" });",
|
||||
"fcces",
|
||||
" ",
|
||||
"<div>",
|
||||
" <div class = 'container inset'>",
|
||||
" <div class = 'header inset'>",
|
||||
" <img src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg.gz' alt='learn to code javascript at Free Code Camp logo' class='img-responsive nav-logo'>",
|
||||
" <h2>FCC Slot Machine</h2>",
|
||||
" </div>",
|
||||
" <div class = 'slots inset'>",
|
||||
" <div class = 'slot inset'>",
|
||||
" ",
|
||||
" </div>",
|
||||
" <div class = 'slot inset'>",
|
||||
" ",
|
||||
" </div>",
|
||||
" <div class = 'slot inset'>",
|
||||
" ",
|
||||
" </div>",
|
||||
" </div>",
|
||||
" <br/>",
|
||||
" <div class = 'outset'>",
|
||||
" <button class = 'go inset'>",
|
||||
" Go",
|
||||
" </button>",
|
||||
" </div>",
|
||||
" <br/>",
|
||||
" <div class = 'foot inset'>",
|
||||
" <span class = 'logger'></span>",
|
||||
" </div>",
|
||||
" </div>",
|
||||
"</div>",
|
||||
"",
|
||||
"<style>",
|
||||
" .slot > img {",
|
||||
" margin: 0!important;",
|
||||
" height: 71px;",
|
||||
" width: 50px;",
|
||||
" }",
|
||||
" .container {",
|
||||
" background-color: #4a2b0f;",
|
||||
" height: 400px;",
|
||||
" width: 260px;",
|
||||
" margin: 50px auto;",
|
||||
" border-radius: 4px;",
|
||||
" }",
|
||||
" .header {",
|
||||
" border: 2px solid #fff;",
|
||||
" border-radius: 4px;",
|
||||
" height: 55px;",
|
||||
" margin: 14px auto;",
|
||||
" background-color: #457f86",
|
||||
" }",
|
||||
" .header h2 {",
|
||||
" height: 30px;",
|
||||
" margin: auto;",
|
||||
" }",
|
||||
" .header h2 {",
|
||||
" font-size: 14px;",
|
||||
" margin: 0 0;",
|
||||
" padding: 0;",
|
||||
" color: #fff;",
|
||||
" text-align: center;",
|
||||
" }",
|
||||
" .slots{",
|
||||
" display: flex;",
|
||||
" background-color: #457f86;",
|
||||
" border-radius: 6px;",
|
||||
" border: 2px solid #fff;",
|
||||
" }",
|
||||
" .slot{",
|
||||
" flex: 1 0 auto;",
|
||||
" background: white;",
|
||||
" height: 75px;",
|
||||
" width: 50px;",
|
||||
" margin: 8px;",
|
||||
" border: 2px solid #215f1e;",
|
||||
" border-radius: 4px;",
|
||||
" text-align: center;",
|
||||
" }",
|
||||
" .go {",
|
||||
" width: 100%;",
|
||||
" color: #fff;",
|
||||
" background-color: #457f86;",
|
||||
" border: 2px solid #fff;",
|
||||
" border-radius: 2px;",
|
||||
" box-sizing: none;",
|
||||
" outline: none!important;",
|
||||
" }",
|
||||
" .foot {",
|
||||
" height: 150px;",
|
||||
" background-color: 457f86;",
|
||||
" border: 2px solid #fff;",
|
||||
" }",
|
||||
" ",
|
||||
" .logger {",
|
||||
" color: white;",
|
||||
" margin: 10px;",
|
||||
" }",
|
||||
" ",
|
||||
" .outset {",
|
||||
" -webkit-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);",
|
||||
" -moz-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);",
|
||||
" box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);",
|
||||
" }",
|
||||
" ",
|
||||
" .inset {",
|
||||
" -webkit-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);",
|
||||
" -moz-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);",
|
||||
" box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);",
|
||||
" }",
|
||||
"</style>"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"challengeType": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,6 +1,348 @@
|
||||
{
|
||||
"name": "Object Oriented and Functional Programming",
|
||||
"order" : 0.010,
|
||||
"order" : 0.009,
|
||||
"note": [
|
||||
"Waypoint: Closures",
|
||||
"Waypoint: Factories",
|
||||
"Waypoint: Pure Functions",
|
||||
"Waypoint: Currying Functions",
|
||||
"Waypoint: Functors",
|
||||
"Waypoint: Currying Functions"
|
||||
],
|
||||
"challenges": [
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb1bdef",
|
||||
"title":"Waypoint: A Review On Objects",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"Before we dive into Object Oriented Programming Let's take a quick look over objects in javascript"
|
||||
],
|
||||
"tests":[
|
||||
"assert(motorBike.wheels===2, 'You should have given motorBike two wheels');",
|
||||
"assert(motorBike.engine===1, 'You should have given motorBike one engine');",
|
||||
"assert(motorBike.seats===1, 'You should have given motorBike one seat');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"//Here is a sample Object",
|
||||
"var car = {",
|
||||
" \"wheels\":4,",
|
||||
" \"engine\":1,",
|
||||
" \"seats\":5",
|
||||
"};",
|
||||
"",
|
||||
"//Now Let's make a similar Object called motorBike",
|
||||
"//Give it two wheels, one engine and one seat",
|
||||
"var motorBike = {",
|
||||
" \"wheels\":0,",
|
||||
" \"engine\":0,",
|
||||
" \"seats\":0",
|
||||
"};",
|
||||
"",
|
||||
"(function(){return(JSON.stringify(motorBike));})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb2bdef",
|
||||
"title":"Waypoint: Constructing Objects",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"We are also able to create Objects using functions"
|
||||
],
|
||||
"tests":[
|
||||
"assert((new Car()).wheels === 4, \"myCar.wheels should be four. Make sure that you haven't changed this value\");",
|
||||
"assert(typeof((new Car()).engine) === 'number', 'myCar.engine should be a number');",
|
||||
"assert(typeof((new Car()).seats) === 'number', 'myCar.seats should be a number');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"//Let's add the properties engine 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(){",
|
||||
" this.wheels = 4;",
|
||||
"};",
|
||||
"",
|
||||
"//Instantiated Here",
|
||||
"var myCar = new Car();",
|
||||
"",
|
||||
"(function(){return(JSON.stringify(myCar));})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb3bdef",
|
||||
"title":"Waypoint: Understanding Public and Private Properties",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"In the last challenge we use the <code>this</code> to reference public properties the current object or function.",
|
||||
"We can also create variables and functions that aren't accessible from outside the Object"
|
||||
],
|
||||
"tests":[
|
||||
"assert(typeof(myBike.getSpeed)!=='undefined' && typeof(myBike.getSpeed) === 'function', 'The method getSpeed of myBike should be accessible outside the Object');",
|
||||
"assert(typeof(myBike.speed) === 'undefined', 'We should not been able');",
|
||||
"assert(typeof(myBike.addUnit === 'undefined'), '');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"//Let's create an object with a two functions. One attached as a property and one not.",
|
||||
"var Car = function(){",
|
||||
" this.gear = 1;",
|
||||
" function addStyle(styleMe){",
|
||||
" return('The Current Gear Is: ' + styleMe);",
|
||||
" }",
|
||||
" this.getGear = function(){",
|
||||
" return(addStyle(this.gear));",
|
||||
" };",
|
||||
"};",
|
||||
"",
|
||||
"//Make the function getSpeed of Bike publicly accessible",
|
||||
"",
|
||||
"var Bike = function(){",
|
||||
" speed = 100;",
|
||||
" function addUnit(value){",
|
||||
" return(value + \"KM/H\");",
|
||||
" }",
|
||||
" ",
|
||||
" getSpeed = function (){",
|
||||
" return(addUnit(speed));",
|
||||
" };",
|
||||
" ",
|
||||
"};",
|
||||
"",
|
||||
"//Instantiated Here",
|
||||
"var myCar = new Car();",
|
||||
"var myBike = new Bike();",
|
||||
"",
|
||||
"if(myBike.hasOwnProperty('getSpeed')){(function(){return(JSON.stringify(myBike.getSpeed()));})();};"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb4bdef",
|
||||
"title":"Waypoint: Instantiation",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"Instantiation at it's most basic level is where you are creating a copy of an object from a template for use at a later time",
|
||||
"The instance inherits all the properties and methods of the original Object"
|
||||
],
|
||||
"tests":[
|
||||
"assert((new Car()).wheels === 4, 'The property wheels should be four in the object constructor');",
|
||||
"assert(typeof((new Car()).engine) === 'undefined', 'There should not be a property engine in the object constructor');",
|
||||
"assert(myCar.wheels === 4, 'The property wheels of myCar should be four');",
|
||||
"assert(typeof(myCar.engine) === 'number', 'The property engine of myCar should be a number');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"var Car = function(){",
|
||||
" this.wheels = 4;",
|
||||
"};",
|
||||
"",
|
||||
"var myCar = new Car();",
|
||||
"",
|
||||
"//Add the property engine to myCar using dot notation and make it a number",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(JSON.stringify(myCar));})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb7bdef",
|
||||
"title":"Waypoint: Using .map",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"<code>array = array.map(function(val){",
|
||||
" return(val+1);",
|
||||
"});</code>",
|
||||
"",
|
||||
"The map method is one of the easiest ways to iterate through an array or object there is. Let's use it now"
|
||||
],
|
||||
"tests":[
|
||||
"assert.deepEqual(array, [4,5,6,7,8], 'You should have added three to each value in the array');",
|
||||
"assert(editor.getValue().match(/\\.map\\(/gi), 'You should be making use of the map method');",
|
||||
"assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\]/gi), 'You should only modify the array with .map');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"//Use map to add three to each value in the array",
|
||||
"var array = [1,2,3,4,5];",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(array);})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb8bdef",
|
||||
"title":"Waypoint: Using .reduce",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"Reduce can be useful for condensing and array or numbers into one value.",
|
||||
"",
|
||||
"<code>var singleVal = array.reduce(function(previousVal, currentVal){",
|
||||
" return(previousVal+currentVal);",
|
||||
"}</code>"
|
||||
],
|
||||
"tests":[
|
||||
"assert(singleVal == 30, 'singleVal should have been set to the result of you reduce operation');",
|
||||
"assert(editor.getValue().match(/\\.reduce\\(/gi), 'You should have made use of the reduce method');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"var array = [4,5,6,7,8];",
|
||||
"",
|
||||
"var singleVal = 0;",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(singleVal);})()"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c15feddfaeb9bdef",
|
||||
"title":"Waypoint: Using .filter",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"filter is a useful method that can filter out values that don't match a certain criteria",
|
||||
"Let's remove all the values less than six",
|
||||
"<code>array = array.filter(function(val){",
|
||||
" return(val<4);",
|
||||
"});</code>"
|
||||
],
|
||||
"tests":[
|
||||
"assert.deepEqual(array, [1,2,3,4,5], 'You should have removed all the values from the array that are less than six');",
|
||||
"assert(editor.getValue().match(/array\\.filter\\(/gi), 'You should be using the filter method to remove the values from the array');",
|
||||
"assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\,6\\,7\\,8\\,9\\,10\\]/gi), 'You should only be using .filter to modify the contents of the array);"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"var array = [1,2,3,4,5,6,7,8,9,10];",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(array);})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c16feddfaeb1bdef",
|
||||
"title":"Waypoint: Using .sort",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"You can use the method sort to easily sort the values in the array alphabetically or numerically",
|
||||
"<code>var array = [1,3,2];",
|
||||
"array = array.sort();</code>",
|
||||
"This will return [1, 2, 3]",
|
||||
""
|
||||
],
|
||||
"tests":[
|
||||
"assert.deepEqual(array, ['alpha', 'beta', 'charlie'], 'You should have sorted the array alphabetically');",
|
||||
"assert(editor.getValue().match(/\\[\\'beta\\'\\,\\s\\'alpha\\'\\,\\s'charlie\\'\\];/gi), 'You should be sorting the array using sort');",
|
||||
"assert(editor.getValue().match(/\\.sort\\(\\)/gi), 'You should have made use of the sort method');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"var array = ['beta', 'alpha', 'charlie'];",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(array);})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id": "cf1111c1c16feddfaeb2bdef",
|
||||
"title": "Waypoint: Using .reverse",
|
||||
"difficulty": 0,
|
||||
"description": [
|
||||
"",
|
||||
"You can use the reverse method to reverse the contents of an array"
|
||||
],
|
||||
"tests": [
|
||||
"assert.deepEqual(array, [7,6,5,4,3,2,1], 'You should reverse the array');",
|
||||
"assert(editor.getValue().match(/\\.reverse\\(\\)/gi), '');",
|
||||
"assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\,6\\,7/gi), '');"
|
||||
],
|
||||
"challengeSeed": [
|
||||
"var array = [1,2,3,4,5,6,7];",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(array);})();"
|
||||
],
|
||||
"challengeType": 1
|
||||
},
|
||||
{
|
||||
"id": "cf1111c1c16feddfaeb3bdef",
|
||||
"title": "Waypoint: Using .concat",
|
||||
"difficulty": 0,
|
||||
"description": [
|
||||
"",
|
||||
"Concat can be used to merge the contents of two arrays into one",
|
||||
"<code>array = array.concat(otherArray);</code>"
|
||||
],
|
||||
"tests": [
|
||||
"assert.deepEqual(array, [1,2,3,4,5,6], 'You should concat the two arrays together');",
|
||||
"assert(editor.getValue().match(/\\.concat\\(/gi), 'You should be using the concat method to merge the two arrays');",
|
||||
"assert(editor.getValue().match(/\\[1\\,2\\,3\\]/gi) && editor.getValue().match(/\\[4\\,5\\,6\\]/gi), 'You should only modify the two arrays without changing the origional ones');"
|
||||
],
|
||||
"challengeSeed": [
|
||||
"var array = [1,2,3];",
|
||||
"",
|
||||
"var concatMe = [4,5,6];",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"(function(){return(array);})()"
|
||||
],
|
||||
"challengeType": 1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c16feddfaeb4bdef",
|
||||
"title":"Waypoint: Using .split",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"You can use the split method to split a string into an array",
|
||||
"split uses the argument you give to to split the string",
|
||||
"<code>array = string.split(' ');</code>"
|
||||
],
|
||||
"tests":[
|
||||
"assert(typeof(array) === 'object' && array.length === 5, 'You should have split the string by it\\'s spaces');",
|
||||
"assert(/\\.split\\(/gi, 'You should have made use of the split method on the string');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"var string = \"Split me into an array\";",
|
||||
"",
|
||||
"var array = string;",
|
||||
"",
|
||||
"(function(){return(array);})();"
|
||||
],
|
||||
"challengeType":1
|
||||
},
|
||||
{
|
||||
"id":"cf1111c1c16feddfaeb5bdef",
|
||||
"title":"Waypoint: Using .join",
|
||||
"difficulty":0,
|
||||
"description":[
|
||||
"",
|
||||
"We can use the join 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>"
|
||||
],
|
||||
"tests":[
|
||||
"assert(typeof(joinMe) === 'string' && joinMe === \"Split me into an array\", 'You should have joined the arrays by it\\'s spaces');",
|
||||
"assert(/\\.join\\(/gi, 'You should have made use of the join method on the array');"
|
||||
],
|
||||
"challengeSeed":[
|
||||
"var joinMe = [\"Split\",\"me\",\"into\",\"an\",\"array\"];",
|
||||
"",
|
||||
"joinMe = joinMe;",
|
||||
"",
|
||||
"(function(){return(joinMe);})();"
|
||||
],
|
||||
"challengeType":1
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user