diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.english.md index ce6e2624fa..b15631aa30 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.english.md @@ -7,13 +7,27 @@ forumTopicId: 18179 ## Description
-Another useful array function is Array.prototype.filter(), or simply filter(). The filter method returns a new array which is at most as long as the original array, but usually has fewer items. -Filter doesn't alter the original array, just like map. It takes a callback function that applies the logic inside the callback on each element of the array. If an element returns true based on the criteria in the callback function, then it is included in the new array. +Another useful array function is Array.prototype.filter(), or simply filter(). +filter calls a function on each element of an array and returns a new array containing only the elements for which that function returns true. In other words, it filters the array, based on the function passed to it. Like map, it does this without needing to modify the original array. +The callback function accepts three arguments. The first argument is the current element being processed. The second is the index of that element and the third is the array upon which the filter method was called. +See below for an example using the filter method on the users array to return a new array containing only the users under the age of 30. For simplicity, the example only uses the first argument of the callback. + +```js +const users = [ + { name: 'John', age: 34 }, + { name: 'Amy', age: 20 }, + { name: 'camperCat', age: 10 } +]; + +const usersUnder30 = users.filter(user => user.age < 30); +console.log(usersUnder30); // [ { name: 'Amy', age: 20 }, { name: 'camperCat', age: 10 } ] +``` +
## Instructions
-The variable watchList holds an array of objects with information on several movies. Use a combination of filter and map to return a new array of objects with only title and rating keys, but where imdbRating is greater than or equal to 8.0. Note that the rating values are saved as strings in the object and you may want to convert them into numbers to perform mathematical operations on them. +The variable watchList holds an array of objects with information on several movies. Use a combination of filter and map on watchList to assign a new array of objects with only title and rating keys. The new array should only include objects where imdbRating is greater than or equal to 8.0. Note that the rating values are saved as strings in the object and you may need to convert them into numbers to perform mathematical operations on them.
## Tests @@ -42,116 +56,116 @@ tests: ```js // the global variable var watchList = [ - { - "Title": "Inception", - "Year": "2010", - "Rated": "PG-13", - "Released": "16 Jul 2010", - "Runtime": "148 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Christopher Nolan", - "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", - "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", - "Language": "English, Japanese, French", - "Country": "USA, UK", - "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.8", - "imdbVotes": "1,446,708", - "imdbID": "tt1375666", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Interstellar", - "Year": "2014", - "Rated": "PG-13", - "Released": "07 Nov 2014", - "Runtime": "169 min", - "Genre": "Adventure, Drama, Sci-Fi", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan, Christopher Nolan", - "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", - "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", - "Language": "English", - "Country": "USA, UK", - "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.6", - "imdbVotes": "910,366", - "imdbID": "tt0816692", - "Type": "movie", - "Response": "True" - }, - { - "Title": "The Dark Knight", - "Year": "2008", - "Rated": "PG-13", - "Released": "18 Jul 2008", - "Runtime": "152 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", - "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", - "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", - "Language": "English, Mandarin", - "Country": "USA, UK", - "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", - "Metascore": "82", - "imdbRating": "9.0", - "imdbVotes": "1,652,832", - "imdbID": "tt0468569", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Batman Begins", - "Year": "2005", - "Rated": "PG-13", - "Released": "15 Jun 2005", - "Runtime": "140 min", - "Genre": "Action, Adventure", - "Director": "Christopher Nolan", - "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", - "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", - "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", - "Language": "English, Urdu, Mandarin", - "Country": "USA, UK", - "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", - "Metascore": "70", - "imdbRating": "8.3", - "imdbVotes": "972,584", - "imdbID": "tt0372784", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Avatar", - "Year": "2009", - "Rated": "PG-13", - "Released": "18 Dec 2009", - "Runtime": "162 min", - "Genre": "Action, Adventure, Fantasy", - "Director": "James Cameron", - "Writer": "James Cameron", - "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", - "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", - "Language": "English, Spanish", - "Country": "USA, UK", - "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", - "Metascore": "83", - "imdbRating": "7.9", - "imdbVotes": "876,575", - "imdbID": "tt0499549", - "Type": "movie", - "Response": "True" - } + { + "Title": "Inception", + "Year": "2010", + "Rated": "PG-13", + "Released": "16 Jul 2010", + "Runtime": "148 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Christopher Nolan", + "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", + "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", + "Language": "English, Japanese, French", + "Country": "USA, UK", + "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.8", + "imdbVotes": "1,446,708", + "imdbID": "tt1375666", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Interstellar", + "Year": "2014", + "Rated": "PG-13", + "Released": "07 Nov 2014", + "Runtime": "169 min", + "Genre": "Adventure, Drama, Sci-Fi", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan, Christopher Nolan", + "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", + "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", + "Language": "English", + "Country": "USA, UK", + "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.6", + "imdbVotes": "910,366", + "imdbID": "tt0816692", + "Type": "movie", + "Response": "True" + }, + { + "Title": "The Dark Knight", + "Year": "2008", + "Rated": "PG-13", + "Released": "18 Jul 2008", + "Runtime": "152 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", + "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", + "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", + "Language": "English, Mandarin", + "Country": "USA, UK", + "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", + "Metascore": "82", + "imdbRating": "9.0", + "imdbVotes": "1,652,832", + "imdbID": "tt0468569", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Batman Begins", + "Year": "2005", + "Rated": "PG-13", + "Released": "15 Jun 2005", + "Runtime": "140 min", + "Genre": "Action, Adventure", + "Director": "Christopher Nolan", + "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", + "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", + "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", + "Language": "English, Urdu, Mandarin", + "Country": "USA, UK", + "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", + "Metascore": "70", + "imdbRating": "8.3", + "imdbVotes": "972,584", + "imdbID": "tt0372784", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Avatar", + "Year": "2009", + "Rated": "PG-13", + "Released": "18 Dec 2009", + "Runtime": "162 min", + "Genre": "Action, Adventure, Fantasy", + "Director": "James Cameron", + "Writer": "James Cameron", + "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", + "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", + "Language": "English, Spanish", + "Country": "USA, UK", + "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", + "Metascore": "83", + "imdbRating": "7.9", + "imdbVotes": "876,575", + "imdbID": "tt0499549", + "Type": "movie", + "Response": "True" + } ]; // Add your code below this line @@ -175,117 +189,118 @@ console.log(filteredList); ```js // the global variable var watchList = [ - { - "Title": "Inception", - "Year": "2010", - "Rated": "PG-13", - "Released": "16 Jul 2010", - "Runtime": "148 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Christopher Nolan", - "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", - "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", - "Language": "English, Japanese, French", - "Country": "USA, UK", - "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.8", - "imdbVotes": "1,446,708", - "imdbID": "tt1375666", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Interstellar", - "Year": "2014", - "Rated": "PG-13", - "Released": "07 Nov 2014", - "Runtime": "169 min", - "Genre": "Adventure, Drama, Sci-Fi", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan, Christopher Nolan", - "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", - "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", - "Language": "English", - "Country": "USA, UK", - "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.6", - "imdbVotes": "910,366", - "imdbID": "tt0816692", - "Type": "movie", - "Response": "True" - }, - { - "Title": "The Dark Knight", - "Year": "2008", - "Rated": "PG-13", - "Released": "18 Jul 2008", - "Runtime": "152 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", - "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", - "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", - "Language": "English, Mandarin", - "Country": "USA, UK", - "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", - "Metascore": "82", - "imdbRating": "9.0", - "imdbVotes": "1,652,832", - "imdbID": "tt0468569", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Batman Begins", - "Year": "2005", - "Rated": "PG-13", - "Released": "15 Jun 2005", - "Runtime": "140 min", - "Genre": "Action, Adventure", - "Director": "Christopher Nolan", - "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", - "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", - "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", - "Language": "English, Urdu, Mandarin", - "Country": "USA, UK", - "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", - "Metascore": "70", - "imdbRating": "8.3", - "imdbVotes": "972,584", - "imdbID": "tt0372784", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Avatar", - "Year": "2009", - "Rated": "PG-13", - "Released": "18 Dec 2009", - "Runtime": "162 min", - "Genre": "Action, Adventure, Fantasy", - "Director": "James Cameron", - "Writer": "James Cameron", - "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", - "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", - "Language": "English, Spanish", - "Country": "USA, UK", - "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", - "Metascore": "83", - "imdbRating": "7.9", - "imdbVotes": "876,575", - "imdbID": "tt0499549", - "Type": "movie", - "Response": "True" - } + { + "Title": "Inception", + "Year": "2010", + "Rated": "PG-13", + "Released": "16 Jul 2010", + "Runtime": "148 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Christopher Nolan", + "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", + "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", + "Language": "English, Japanese, French", + "Country": "USA, UK", + "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.8", + "imdbVotes": "1,446,708", + "imdbID": "tt1375666", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Interstellar", + "Year": "2014", + "Rated": "PG-13", + "Released": "07 Nov 2014", + "Runtime": "169 min", + "Genre": "Adventure, Drama, Sci-Fi", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan, Christopher Nolan", + "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", + "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", + "Language": "English", + "Country": "USA, UK", + "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.6", + "imdbVotes": "910,366", + "imdbID": "tt0816692", + "Type": "movie", + "Response": "True" + }, + { + "Title": "The Dark Knight", + "Year": "2008", + "Rated": "PG-13", + "Released": "18 Jul 2008", + "Runtime": "152 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", + "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", + "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", + "Language": "English, Mandarin", + "Country": "USA, UK", + "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", + "Metascore": "82", + "imdbRating": "9.0", + "imdbVotes": "1,652,832", + "imdbID": "tt0468569", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Batman Begins", + "Year": "2005", + "Rated": "PG-13", + "Released": "15 Jun 2005", + "Runtime": "140 min", + "Genre": "Action, Adventure", + "Director": "Christopher Nolan", + "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", + "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", + "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", + "Language": "English, Urdu, Mandarin", + "Country": "USA, UK", + "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", + "Metascore": "70", + "imdbRating": "8.3", + "imdbVotes": "972,584", + "imdbID": "tt0372784", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Avatar", + "Year": "2009", + "Rated": "PG-13", + "Released": "18 Dec 2009", + "Runtime": "162 min", + "Genre": "Action, Adventure, Fantasy", + "Director": "James Cameron", + "Writer": "James Cameron", + "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", + "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", + "Language": "English, Spanish", + "Country": "USA, UK", + "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", + "Metascore": "83", + "imdbRating": "7.9", + "imdbVotes": "876,575", + "imdbID": "tt0499549", + "Type": "movie", + "Response": "True" + } ]; + // Add your code below this line let filteredList = watchList.filter(e => e.imdbRating >= 8).map( ({Title: title, imdbRating: rating}) => ({title, rating}) ); // Add your code above this line diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.english.md index dece889593..24035d5f5e 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.english.md @@ -11,12 +11,26 @@ So far we have learned to use pure functions to avoid side effects in a program. This is only the beginning. As its name suggests, functional programming is centered around a theory of functions. It would make sense to be able to pass them as arguments to other functions, and return a function from another function. Functions are considered first class objects in JavaScript, which means they can be used like any other object. They can be saved in variables, stored in an object, or passed as function arguments. Let's start with some simple array functions, which are methods on the array object prototype. In this exercise we are looking at Array.prototype.map(), or more simply map. -Remember that the map method is a way to iterate over each item in an array. It creates a new array (without changing the original one) after applying a callback function to every element. +The map method iterates over each item in an array and returns a new array containing the results of calling the callback function on each element. It does this without mutating the original array. +When the callback is used, it is passed three arguments. The first argument is the current element being processed. The second is the index of that element and the third is the array upon which the map method was called. +See below for an example using the map method on the users array to return a new array containing only the names of the users as elements. For simplicity, the example only uses the first argument of the callback. + +```js +const users = [ + { name: 'John', age: 34 }, + { name: 'Amy', age: 20 }, + { name: 'camperCat', age: 10 } +]; + +const names = users.map(user => user.name); +console.log(names); // [ 'John', 'Amy', 'camperCat' ] +``` + ## Instructions
-The watchList array holds objects with information on several movies. Use map to pull the title and rating from watchList and save the new array in the rating variable. The code in the editor currently uses a for loop to do this, replace the loop functionality with your map expression. +The watchList array holds objects with information on several movies. Use map on watchList to assign a new array of objects with only title and rating keys to the ratings variable. The code in the editor currently uses a for loop to do this, so you should replace the loop functionality with your map expression.
## Tests @@ -30,8 +44,8 @@ tests: testString: assert(!removeJSComments(code).match(/for\s*?\(.*?\)/)); - text: Your code should use the map method. testString: assert(code.match(/\.map/g)); - - text: rating should equal [{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}]. - testString: assert(JSON.stringify(rating) === JSON.stringify([{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}])); + - text: ratings should equal [{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}]. + testString: assert(JSON.stringify(ratings) === JSON.stringify([{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}])); ``` @@ -45,123 +59,123 @@ tests: ```js // the global variable var watchList = [ - { - "Title": "Inception", - "Year": "2010", - "Rated": "PG-13", - "Released": "16 Jul 2010", - "Runtime": "148 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Christopher Nolan", - "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", - "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", - "Language": "English, Japanese, French", - "Country": "USA, UK", - "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.8", - "imdbVotes": "1,446,708", - "imdbID": "tt1375666", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Interstellar", - "Year": "2014", - "Rated": "PG-13", - "Released": "07 Nov 2014", - "Runtime": "169 min", - "Genre": "Adventure, Drama, Sci-Fi", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan, Christopher Nolan", - "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", - "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", - "Language": "English", - "Country": "USA, UK", - "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.6", - "imdbVotes": "910,366", - "imdbID": "tt0816692", - "Type": "movie", - "Response": "True" - }, - { - "Title": "The Dark Knight", - "Year": "2008", - "Rated": "PG-13", - "Released": "18 Jul 2008", - "Runtime": "152 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", - "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", - "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", - "Language": "English, Mandarin", - "Country": "USA, UK", - "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", - "Metascore": "82", - "imdbRating": "9.0", - "imdbVotes": "1,652,832", - "imdbID": "tt0468569", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Batman Begins", - "Year": "2005", - "Rated": "PG-13", - "Released": "15 Jun 2005", - "Runtime": "140 min", - "Genre": "Action, Adventure", - "Director": "Christopher Nolan", - "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", - "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", - "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", - "Language": "English, Urdu, Mandarin", - "Country": "USA, UK", - "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", - "Metascore": "70", - "imdbRating": "8.3", - "imdbVotes": "972,584", - "imdbID": "tt0372784", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Avatar", - "Year": "2009", - "Rated": "PG-13", - "Released": "18 Dec 2009", - "Runtime": "162 min", - "Genre": "Action, Adventure, Fantasy", - "Director": "James Cameron", - "Writer": "James Cameron", - "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", - "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", - "Language": "English, Spanish", - "Country": "USA, UK", - "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", - "Metascore": "83", - "imdbRating": "7.9", - "imdbVotes": "876,575", - "imdbID": "tt0499549", - "Type": "movie", - "Response": "True" - } + { + "Title": "Inception", + "Year": "2010", + "Rated": "PG-13", + "Released": "16 Jul 2010", + "Runtime": "148 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Christopher Nolan", + "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", + "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", + "Language": "English, Japanese, French", + "Country": "USA, UK", + "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.8", + "imdbVotes": "1,446,708", + "imdbID": "tt1375666", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Interstellar", + "Year": "2014", + "Rated": "PG-13", + "Released": "07 Nov 2014", + "Runtime": "169 min", + "Genre": "Adventure, Drama, Sci-Fi", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan, Christopher Nolan", + "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", + "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", + "Language": "English", + "Country": "USA, UK", + "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.6", + "imdbVotes": "910,366", + "imdbID": "tt0816692", + "Type": "movie", + "Response": "True" + }, + { + "Title": "The Dark Knight", + "Year": "2008", + "Rated": "PG-13", + "Released": "18 Jul 2008", + "Runtime": "152 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", + "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", + "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", + "Language": "English, Mandarin", + "Country": "USA, UK", + "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", + "Metascore": "82", + "imdbRating": "9.0", + "imdbVotes": "1,652,832", + "imdbID": "tt0468569", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Batman Begins", + "Year": "2005", + "Rated": "PG-13", + "Released": "15 Jun 2005", + "Runtime": "140 min", + "Genre": "Action, Adventure", + "Director": "Christopher Nolan", + "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", + "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", + "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", + "Language": "English, Urdu, Mandarin", + "Country": "USA, UK", + "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", + "Metascore": "70", + "imdbRating": "8.3", + "imdbVotes": "972,584", + "imdbID": "tt0372784", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Avatar", + "Year": "2009", + "Rated": "PG-13", + "Released": "18 Dec 2009", + "Runtime": "162 min", + "Genre": "Action, Adventure, Fantasy", + "Director": "James Cameron", + "Writer": "James Cameron", + "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", + "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", + "Language": "English, Spanish", + "Country": "USA, UK", + "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", + "Metascore": "83", + "imdbRating": "7.9", + "imdbVotes": "876,575", + "imdbID": "tt0499549", + "Type": "movie", + "Response": "True" + } ]; // Add your code below this line -var rating = []; +var ratings = []; for(var i=0; i < watchList.length; i++){ - rating.push({title: watchList[i]["Title"], rating: watchList[i]["imdbRating"]}); + ratings.push({title: watchList[i]["Title"], rating: watchList[i]["imdbRating"]}); } // Add your code above this line @@ -188,119 +202,119 @@ const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, ''); ```js // the global variable var watchList = [ - { - "Title": "Inception", - "Year": "2010", - "Rated": "PG-13", - "Released": "16 Jul 2010", - "Runtime": "148 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Christopher Nolan", - "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", - "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", - "Language": "English, Japanese, French", - "Country": "USA, UK", - "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.8", - "imdbVotes": "1,446,708", - "imdbID": "tt1375666", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Interstellar", - "Year": "2014", - "Rated": "PG-13", - "Released": "07 Nov 2014", - "Runtime": "169 min", - "Genre": "Adventure, Drama, Sci-Fi", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan, Christopher Nolan", - "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", - "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", - "Language": "English", - "Country": "USA, UK", - "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.6", - "imdbVotes": "910,366", - "imdbID": "tt0816692", - "Type": "movie", - "Response": "True" - }, - { - "Title": "The Dark Knight", - "Year": "2008", - "Rated": "PG-13", - "Released": "18 Jul 2008", - "Runtime": "152 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", - "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", - "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", - "Language": "English, Mandarin", - "Country": "USA, UK", - "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", - "Metascore": "82", - "imdbRating": "9.0", - "imdbVotes": "1,652,832", - "imdbID": "tt0468569", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Batman Begins", - "Year": "2005", - "Rated": "PG-13", - "Released": "15 Jun 2005", - "Runtime": "140 min", - "Genre": "Action, Adventure", - "Director": "Christopher Nolan", - "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", - "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", - "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", - "Language": "English, Urdu, Mandarin", - "Country": "USA, UK", - "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", - "Metascore": "70", - "imdbRating": "8.3", - "imdbVotes": "972,584", - "imdbID": "tt0372784", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Avatar", - "Year": "2009", - "Rated": "PG-13", - "Released": "18 Dec 2009", - "Runtime": "162 min", - "Genre": "Action, Adventure, Fantasy", - "Director": "James Cameron", - "Writer": "James Cameron", - "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", - "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", - "Language": "English, Spanish", - "Country": "USA, UK", - "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", - "Metascore": "83", - "imdbRating": "7.9", - "imdbVotes": "876,575", - "imdbID": "tt0499549", - "Type": "movie", - "Response": "True" - } + { + "Title": "Inception", + "Year": "2010", + "Rated": "PG-13", + "Released": "16 Jul 2010", + "Runtime": "148 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Christopher Nolan", + "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", + "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", + "Language": "English, Japanese, French", + "Country": "USA, UK", + "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.8", + "imdbVotes": "1,446,708", + "imdbID": "tt1375666", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Interstellar", + "Year": "2014", + "Rated": "PG-13", + "Released": "07 Nov 2014", + "Runtime": "169 min", + "Genre": "Adventure, Drama, Sci-Fi", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan, Christopher Nolan", + "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", + "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", + "Language": "English", + "Country": "USA, UK", + "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.6", + "imdbVotes": "910,366", + "imdbID": "tt0816692", + "Type": "movie", + "Response": "True" + }, + { + "Title": "The Dark Knight", + "Year": "2008", + "Rated": "PG-13", + "Released": "18 Jul 2008", + "Runtime": "152 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", + "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", + "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", + "Language": "English, Mandarin", + "Country": "USA, UK", + "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", + "Metascore": "82", + "imdbRating": "9.0", + "imdbVotes": "1,652,832", + "imdbID": "tt0468569", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Batman Begins", + "Year": "2005", + "Rated": "PG-13", + "Released": "15 Jun 2005", + "Runtime": "140 min", + "Genre": "Action, Adventure", + "Director": "Christopher Nolan", + "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", + "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", + "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", + "Language": "English, Urdu, Mandarin", + "Country": "USA, UK", + "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", + "Metascore": "70", + "imdbRating": "8.3", + "imdbVotes": "972,584", + "imdbID": "tt0372784", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Avatar", + "Year": "2009", + "Rated": "PG-13", + "Released": "18 Dec 2009", + "Runtime": "162 min", + "Genre": "Action, Adventure, Fantasy", + "Director": "James Cameron", + "Writer": "James Cameron", + "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", + "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", + "Language": "English, Spanish", + "Country": "USA, UK", + "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", + "Metascore": "83", + "imdbRating": "7.9", + "imdbVotes": "876,575", + "imdbID": "tt0499549", + "Type": "movie", + "Response": "True" + } ]; -var rating = watchList.map(function(movie) { +var ratings = watchList.map(function(movie) { return { title: movie["Title"], rating: movie["imdbRating"] diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-reduce-method-to-analyze-data.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-reduce-method-to-analyze-data.english.md index b9c67d8fcc..193ce6808e 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-reduce-method-to-analyze-data.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/use-the-reduce-method-to-analyze-data.english.md @@ -7,10 +7,45 @@ forumTopicId: 301313 ## Description
+ Array.prototype.reduce(), or simply reduce(), is the most general of all array operations in JavaScript. You can solve almost any array processing problem using the reduce method. -This is not the case with the filter and map methods since they do not allow interaction between two different elements of the array. For example, if you want to compare elements of the array, or add them together, filter or map could not process that. -The reduce method allows for more general forms of array processing, and it's possible to show that both filter and map can be derived as a special application of reduce. -However, before we get there, let's practice using reduce first. + +The reduce method allows for more general forms of array processing, and it's possible to show that both filter and map can be derived as special applications of reduce. +The reduce method iterates over each item in an array and returns a single value (i.e. string, number, object, array). This is achieved via a callback function that is called on each iteration. + +The callback function accepts four arguments. The first argument is known as the accumulator, which gets assigned the return value of the callback function from the previous iteration, the second is the current element being processed, the third is the index of that element and the fourth is the array upon which reduce is called. + +In addition to the callback function, reduce has an additional parameter which takes an initial value for the accumulator. If this second parameter is not used, then the first iteration is skipped and the second iteration gets passed the first element of the array as the accumulator. + +See below for an example using reduce on the users array to return the sum of all the users' ages. For simplicity, the example only uses the first and second arguments. + +```js +const users = [ + { name: 'John', age: 34 }, + { name: 'Amy', age: 20 }, + { name: 'camperCat', age: 10 } +]; + +const sumOfAges = users.reduce((sum, user) => sum + user.age, 0); +console.log(sumOfAges); // 64 +``` + +In another example, see how an object can be returned containing the names of the users as properties with their ages as values. + +```js +const users = [ + { name: 'John', age: 34 }, + { name: 'Amy', age: 20 }, + { name: 'camperCat', age: 10 } +]; + +const usersObj = users.reduce((obj, user) => { + obj[user.name] = user.age; + return obj; +}, {}); +console.log(usersObj); // { John: 34, Amy: 20, camperCat: 10 } +``` +
## Instructions @@ -46,116 +81,116 @@ tests: ```js // the global variable var watchList = [ - { - "Title": "Inception", - "Year": "2010", - "Rated": "PG-13", - "Released": "16 Jul 2010", - "Runtime": "148 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Christopher Nolan", - "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", - "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", - "Language": "English, Japanese, French", - "Country": "USA, UK", - "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.8", - "imdbVotes": "1,446,708", - "imdbID": "tt1375666", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Interstellar", - "Year": "2014", - "Rated": "PG-13", - "Released": "07 Nov 2014", - "Runtime": "169 min", - "Genre": "Adventure, Drama, Sci-Fi", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan, Christopher Nolan", - "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", - "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", - "Language": "English", - "Country": "USA, UK", - "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.6", - "imdbVotes": "910,366", - "imdbID": "tt0816692", - "Type": "movie", - "Response": "True" - }, - { - "Title": "The Dark Knight", - "Year": "2008", - "Rated": "PG-13", - "Released": "18 Jul 2008", - "Runtime": "152 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", - "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", - "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", - "Language": "English, Mandarin", - "Country": "USA, UK", - "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", - "Metascore": "82", - "imdbRating": "9.0", - "imdbVotes": "1,652,832", - "imdbID": "tt0468569", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Batman Begins", - "Year": "2005", - "Rated": "PG-13", - "Released": "15 Jun 2005", - "Runtime": "140 min", - "Genre": "Action, Adventure", - "Director": "Christopher Nolan", - "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", - "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", - "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", - "Language": "English, Urdu, Mandarin", - "Country": "USA, UK", - "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", - "Metascore": "70", - "imdbRating": "8.3", - "imdbVotes": "972,584", - "imdbID": "tt0372784", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Avatar", - "Year": "2009", - "Rated": "PG-13", - "Released": "18 Dec 2009", - "Runtime": "162 min", - "Genre": "Action, Adventure, Fantasy", - "Director": "James Cameron", - "Writer": "James Cameron", - "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", - "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", - "Language": "English, Spanish", - "Country": "USA, UK", - "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", - "Metascore": "83", - "imdbRating": "7.9", - "imdbVotes": "876,575", - "imdbID": "tt0499549", - "Type": "movie", - "Response": "True" - } + { + "Title": "Inception", + "Year": "2010", + "Rated": "PG-13", + "Released": "16 Jul 2010", + "Runtime": "148 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Christopher Nolan", + "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", + "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", + "Language": "English, Japanese, French", + "Country": "USA, UK", + "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.8", + "imdbVotes": "1,446,708", + "imdbID": "tt1375666", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Interstellar", + "Year": "2014", + "Rated": "PG-13", + "Released": "07 Nov 2014", + "Runtime": "169 min", + "Genre": "Adventure, Drama, Sci-Fi", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan, Christopher Nolan", + "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", + "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", + "Language": "English", + "Country": "USA, UK", + "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.6", + "imdbVotes": "910,366", + "imdbID": "tt0816692", + "Type": "movie", + "Response": "True" + }, + { + "Title": "The Dark Knight", + "Year": "2008", + "Rated": "PG-13", + "Released": "18 Jul 2008", + "Runtime": "152 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", + "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", + "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", + "Language": "English, Mandarin", + "Country": "USA, UK", + "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", + "Metascore": "82", + "imdbRating": "9.0", + "imdbVotes": "1,652,832", + "imdbID": "tt0468569", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Batman Begins", + "Year": "2005", + "Rated": "PG-13", + "Released": "15 Jun 2005", + "Runtime": "140 min", + "Genre": "Action, Adventure", + "Director": "Christopher Nolan", + "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", + "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", + "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", + "Language": "English, Urdu, Mandarin", + "Country": "USA, UK", + "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", + "Metascore": "70", + "imdbRating": "8.3", + "imdbVotes": "972,584", + "imdbID": "tt0372784", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Avatar", + "Year": "2009", + "Rated": "PG-13", + "Released": "18 Dec 2009", + "Runtime": "162 min", + "Genre": "Action, Adventure, Fantasy", + "Director": "James Cameron", + "Writer": "James Cameron", + "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", + "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", + "Language": "English, Spanish", + "Country": "USA, UK", + "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", + "Metascore": "83", + "imdbRating": "7.9", + "imdbVotes": "876,575", + "imdbID": "tt0499549", + "Type": "movie", + "Response": "True" + } ]; function getRating(watchList){ @@ -181,123 +216,123 @@ console.log(getRating(watchList)); ```js // the global variable var watchList = [ - { - "Title": "Inception", - "Year": "2010", - "Rated": "PG-13", - "Released": "16 Jul 2010", - "Runtime": "148 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Christopher Nolan", - "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", - "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", - "Language": "English, Japanese, French", - "Country": "USA, UK", - "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.8", - "imdbVotes": "1,446,708", - "imdbID": "tt1375666", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Interstellar", - "Year": "2014", - "Rated": "PG-13", - "Released": "07 Nov 2014", - "Runtime": "169 min", - "Genre": "Adventure, Drama, Sci-Fi", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan, Christopher Nolan", - "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", - "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", - "Language": "English", - "Country": "USA, UK", - "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", - "Metascore": "74", - "imdbRating": "8.6", - "imdbVotes": "910,366", - "imdbID": "tt0816692", - "Type": "movie", - "Response": "True" - }, - { - "Title": "The Dark Knight", - "Year": "2008", - "Rated": "PG-13", - "Released": "18 Jul 2008", - "Runtime": "152 min", - "Genre": "Action, Adventure, Crime", - "Director": "Christopher Nolan", - "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", - "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", - "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", - "Language": "English, Mandarin", - "Country": "USA, UK", - "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", - "Metascore": "82", - "imdbRating": "9.0", - "imdbVotes": "1,652,832", - "imdbID": "tt0468569", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Batman Begins", - "Year": "2005", - "Rated": "PG-13", - "Released": "15 Jun 2005", - "Runtime": "140 min", - "Genre": "Action, Adventure", - "Director": "Christopher Nolan", - "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", - "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", - "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", - "Language": "English, Urdu, Mandarin", - "Country": "USA, UK", - "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", - "Metascore": "70", - "imdbRating": "8.3", - "imdbVotes": "972,584", - "imdbID": "tt0372784", - "Type": "movie", - "Response": "True" - }, - { - "Title": "Avatar", - "Year": "2009", - "Rated": "PG-13", - "Released": "18 Dec 2009", - "Runtime": "162 min", - "Genre": "Action, Adventure, Fantasy", - "Director": "James Cameron", - "Writer": "James Cameron", - "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", - "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", - "Language": "English, Spanish", - "Country": "USA, UK", - "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", - "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", - "Metascore": "83", - "imdbRating": "7.9", - "imdbVotes": "876,575", - "imdbID": "tt0499549", - "Type": "movie", - "Response": "True" - } + { + "Title": "Inception", + "Year": "2010", + "Rated": "PG-13", + "Released": "16 Jul 2010", + "Runtime": "148 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Christopher Nolan", + "Actors": "Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen Page, Tom Hardy", + "Plot": "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.", + "Language": "English, Japanese, French", + "Country": "USA, UK", + "Awards": "Won 4 Oscars. Another 143 wins & 198 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.8", + "imdbVotes": "1,446,708", + "imdbID": "tt1375666", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Interstellar", + "Year": "2014", + "Rated": "PG-13", + "Released": "07 Nov 2014", + "Runtime": "169 min", + "Genre": "Adventure, Drama, Sci-Fi", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan, Christopher Nolan", + "Actors": "Ellen Burstyn, Matthew McConaughey, Mackenzie Foy, John Lithgow", + "Plot": "A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.", + "Language": "English", + "Country": "USA, UK", + "Awards": "Won 1 Oscar. Another 39 wins & 132 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg", + "Metascore": "74", + "imdbRating": "8.6", + "imdbVotes": "910,366", + "imdbID": "tt0816692", + "Type": "movie", + "Response": "True" + }, + { + "Title": "The Dark Knight", + "Year": "2008", + "Rated": "PG-13", + "Released": "18 Jul 2008", + "Runtime": "152 min", + "Genre": "Action, Adventure, Crime", + "Director": "Christopher Nolan", + "Writer": "Jonathan Nolan (screenplay), Christopher Nolan (screenplay), Christopher Nolan (story), David S. Goyer (story), Bob Kane (characters)", + "Actors": "Christian Bale, Heath Ledger, Aaron Eckhart, Michael Caine", + "Plot": "When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, the caped crusader must come to terms with one of the greatest psychological tests of his ability to fight injustice.", + "Language": "English, Mandarin", + "Country": "USA, UK", + "Awards": "Won 2 Oscars. Another 146 wins & 142 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg", + "Metascore": "82", + "imdbRating": "9.0", + "imdbVotes": "1,652,832", + "imdbID": "tt0468569", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Batman Begins", + "Year": "2005", + "Rated": "PG-13", + "Released": "15 Jun 2005", + "Runtime": "140 min", + "Genre": "Action, Adventure", + "Director": "Christopher Nolan", + "Writer": "Bob Kane (characters), David S. Goyer (story), Christopher Nolan (screenplay), David S. Goyer (screenplay)", + "Actors": "Christian Bale, Michael Caine, Liam Neeson, Katie Holmes", + "Plot": "After training with his mentor, Batman begins his fight to free crime-ridden Gotham City from the corruption that Scarecrow and the League of Shadows have cast upon it.", + "Language": "English, Urdu, Mandarin", + "Country": "USA, UK", + "Awards": "Nominated for 1 Oscar. Another 15 wins & 66 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg", + "Metascore": "70", + "imdbRating": "8.3", + "imdbVotes": "972,584", + "imdbID": "tt0372784", + "Type": "movie", + "Response": "True" + }, + { + "Title": "Avatar", + "Year": "2009", + "Rated": "PG-13", + "Released": "18 Dec 2009", + "Runtime": "162 min", + "Genre": "Action, Adventure, Fantasy", + "Director": "James Cameron", + "Writer": "James Cameron", + "Actors": "Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang", + "Plot": "A paraplegic marine dispatched to the moon Pandora on a unique mission becomes torn between following his orders and protecting the world he feels is his home.", + "Language": "English, Spanish", + "Country": "USA, UK", + "Awards": "Won 3 Oscars. Another 80 wins & 121 nominations.", + "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg", + "Metascore": "83", + "imdbRating": "7.9", + "imdbVotes": "876,575", + "imdbID": "tt0499549", + "Type": "movie", + "Response": "True" + } ]; function getRating(watchList){ var averageRating; const rating = watchList - .filter(obj => obj.Director === "Christopher Nolan") - .map(obj => Number(obj.imdbRating)); + .filter(obj => obj.Director === "Christopher Nolan") + .map(obj => Number(obj.imdbRating)); averageRating = rating.reduce((accum, curr) => accum + curr)/rating.length; return averageRating; }