diff --git a/seed/challenges/01-front-end-development-certification/advanced-bonfires.json b/seed/challenges/01-front-end-development-certification/advanced-bonfires.json
index 3ed7bf6ff89..e1e48a960c6 100644
--- a/seed/challenges/01-front-end-development-certification/advanced-bonfires.json
+++ b/seed/challenges/01-front-end-development-certification/advanced-bonfires.json
@@ -78,6 +78,92 @@
"Ricorda di usare Leggi-Cerca-Chiedi se rimani bloccato. Prova a programmare in coppia. Scrivi il codice da te."
]
},
+ {
+ "id": "56533eb9ac21ba0edf2244cf",
+ "title": "Record Collection",
+ "description": [
+ "You are given a JSON object representing a part of your musical album collection. Each album has several properties and a unique id number as its key. Not all albums have complete information.",
+ "Write a function which takes an album's id (like 2548), a property prop (like \"artist\" or \"tracks\"), and a value (like \"Addicted to Love\") to modify the data in this collection.",
+ "If prop isn't \"tracks\" and value isn't empty (\"\"), update or set the value for that record album's property.",
+ "Your function must always return the entire collection object.",
+ "There are several rules for handling incomplete data:",
+ "If prop is \"tracks\" but the album doesn't have a \"tracks\" property, create an empty array before adding the new value to the album's corresponding property.",
+ "If prop is \"tracks\" and value isn't empty (\"\"), push the value onto the end of the album's existing tracks array.",
+ "If value is empty (\"\"), delete the given prop property from the album.",
+ "Hints
Use bracket notation when accessing object properties with variables.",
+ "Push is an array method you can read about on Mozilla Developer Network.",
+ "You may refer back to Manipulating Complex Objects Introducing JavaScript Object Notation (JSON) for a refresher."
+ ],
+ "releasedOn": "January 1, 2016",
+ "challengeSeed": [
+ "// Setup",
+ "var collection = {",
+ " \"2548\": {",
+ " \"album\": \"Slippery When Wet\",",
+ " \"artist\": \"Bon Jovi\",",
+ " \"tracks\": [ ",
+ " \"Let It Rock\", ",
+ " \"You Give Love a Bad Name\" ",
+ " ]",
+ " },",
+ " \"2468\": {",
+ " \"album\": \"1999\",",
+ " \"artist\": \"Prince\",",
+ " \"tracks\": [ ",
+ " \"1999\", ",
+ " \"Little Red Corvette\" ",
+ " ]",
+ " },",
+ " \"1245\": {",
+ " \"artist\": \"Robert Palmer\",",
+ " \"tracks\": [ ]",
+ " },",
+ " \"5439\": {",
+ " \"album\": \"ABBA Gold\"",
+ " }",
+ "};",
+ "// Keep a copy of the collection for tests",
+ "var collectionCopy = JSON.parse(JSON.stringify(collection));",
+ "",
+ "// Only change code below this line",
+ "function updateRecords(id, prop, value) {",
+ " ",
+ " ",
+ " return collection;",
+ "}",
+ "",
+ "// Alter values below to test your code",
+ "updateRecords(5439, \"artist\", \"ABBA\");",
+ ""
+ ],
+ "tail": [
+ ";(function(x) { return \"collection = \\n\" + JSON.stringify(x, '\\n', 2); })(collection);"
+ ],
+ "solutions": [
+ "var collection = {\n 2548: {\n album: \"Slippery When Wet\",\n artist: \"Bon Jovi\",\n tracks: [ \n \"Let It Rock\", \n \"You Give Love a Bad Name\" \n ]\n },\n 2468: {\n album: \"1999\",\n artist: \"Prince\",\n tracks: [ \n \"1999\", \n \"Little Red Corvette\" \n ]\n },\n 1245: {\n artist: \"Robert Palmer\",\n tracks: [ ]\n },\n 5439: {\n album: \"ABBA Gold\"\n }\n};\n// Keep a copy of the collection for tests\nvar collectionCopy = JSON.parse(JSON.stringify(collection));\n\n// Only change code below this line\nfunction updateRecords(id, prop, value) {\n if(value === \"\") delete collection[id][prop];\n else if(prop === \"tracks\") {\n collection[id][prop] = collection[id][prop] || [];\n collection[id][prop].push(value);\n } else {\n collection[id][prop] = value;\n }\n \n return collection;\n}"
+ ],
+ "tests": [
+ "collection = collectionCopy; assert(updateRecords(5439, \"artist\", \"ABBA\")[5439][\"artist\"] === \"ABBA\", 'message: After updateRecords(5439, \"artist\", \"ABBA\"), artist should be \"ABBA\"');",
+ "assert(updateRecords(5439, \"tracks\", \"Take a Chance on Me\")[5439][\"tracks\"].pop() === \"Take a Chance on Me\", 'message: After updateRecords(5439, \"tracks\", \"Take a Chance on Me\"), tracks should have \"Take a Chance on Me\" as the last element.');",
+ "updateRecords(2548, \"artist\", \"\"); assert(!collection[2548].hasOwnProperty(\"artist\"), 'message: After updateRecords(2548, \"artist\", \"\"), artist should not be set');",
+ "assert(updateRecords(1245, \"tracks\", \"Addicted to Love\")[1245][\"tracks\"].pop() === \"Addicted to Love\", 'message: After updateRecords(1245, \"tracks\", \"Addicted to Love\"), tracks should have \"Addicted to Love\" as the last element.');",
+ "assert(updateRecords(2468, \"tracks\", \"Free\")[2468][\"tracks\"][0] === \"1999\", 'message: After updateRecords(2468, \"tracks\", \"Free\"), tracks should have \"1999\" as the first element.');",
+ "updateRecords(2548, \"tracks\", \"\"); assert(!collection[2548].hasOwnProperty(\"tracks\"), 'message: After updateRecords(2548, \"tracks\", \"\"), tracks should not be set');"
+ ],
+ "type": "bonfire",
+ "challengeType": 5,
+ "titleEs": "Colección de registros",
+ "descriptionEs": [
+ "Se te da un objeto que representa (una pequeña parte de) tu colección de grabaciones. Cada álbum es identificado por un número id único y tiene varias propiedades. No todos los álbumes tienen la información completa.",
+ "Escribe una función que reciba un id, una propiedad (prop) y un valor (value).",
+ "Para el id dado, en la colección collection:",
+ "Si el valor value no está en blanco (value !== \"\") y prop no es \"tracks\" entonces actualiza o establece el valor de la propiedad prop.",
+ "Si la propiedad prop es \"tracks\" y value no está en blanco, empuja (push) el valor value al final del vector tracks.",
+ "Si el valor value está en blanco, elimina esa prop.",
+ "Siempre retorna el objeto collection entero.",
+ "Nota
No olvides usar notación corchete cuando accedes a propiedades de objetos con variables."
+ ]
+ },
{
"id": "a3f503de51cf954ede28891d",
"title": "Symmetric Difference",
@@ -524,4 +610,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/seed/challenges/01-front-end-development-certification/basic-javascript.json b/seed/challenges/01-front-end-development-certification/basic-javascript.json
index e673e9bda0f..9f4251b8eba 100644
--- a/seed/challenges/01-front-end-development-certification/basic-javascript.json
+++ b/seed/challenges/01-front-end-development-certification/basic-javascript.json
@@ -4534,92 +4534,6 @@
"Recupera el segundo arbol de la variable myPlants usando notación punto para objetos y notación corchete para vectores."
]
},
- {
- "id": "56533eb9ac21ba0edf2244cf",
- "title": "Record Collection",
- "description": [
- "You are given a JSON object representing a part of your musical album collection. Each album has several properties and a unique id number as its key. Not all albums have complete information.",
- "Write a function which takes an album's id (like 2548), a property prop (like \"artist\" or \"tracks\"), and a value (like \"Addicted to Love\") to modify the data in this collection.",
- "If prop isn't \"tracks\" and value isn't empty (\"\"), update or set the value for that record album's property.",
- "Your function must always return the entire collection object.",
- "There are several rules for handling incomplete data:",
- "If prop is \"tracks\" but the album doesn't have a \"tracks\" property, create an empty array before adding the new value to the album's corresponding property.",
- "If prop is \"tracks\" and value isn't empty (\"\"), push the value onto the end of the album's existing tracks array.",
- "If value is empty (\"\"), delete the given prop property from the album.",
- "Hints
Use bracket notation when accessing object properties with variables.",
- "Push is an array method you can read about on Mozilla Developer Network.",
- "You may refer back to Manipulating Complex Objects Introducing JavaScript Object Notation (JSON) for a refresher."
- ],
- "releasedOn": "January 1, 2016",
- "challengeSeed": [
- "// Setup",
- "var collection = {",
- " \"2548\": {",
- " \"album\": \"Slippery When Wet\",",
- " \"artist\": \"Bon Jovi\",",
- " \"tracks\": [ ",
- " \"Let It Rock\", ",
- " \"You Give Love a Bad Name\" ",
- " ]",
- " },",
- " \"2468\": {",
- " \"album\": \"1999\",",
- " \"artist\": \"Prince\",",
- " \"tracks\": [ ",
- " \"1999\", ",
- " \"Little Red Corvette\" ",
- " ]",
- " },",
- " \"1245\": {",
- " \"artist\": \"Robert Palmer\",",
- " \"tracks\": [ ]",
- " },",
- " \"5439\": {",
- " \"album\": \"ABBA Gold\"",
- " }",
- "};",
- "// Keep a copy of the collection for tests",
- "var collectionCopy = JSON.parse(JSON.stringify(collection));",
- "",
- "// Only change code below this line",
- "function updateRecords(id, prop, value) {",
- " ",
- " ",
- " return collection;",
- "}",
- "",
- "// Alter values below to test your code",
- "updateRecords(5439, \"artist\", \"ABBA\");",
- ""
- ],
- "tail": [
- ";(function(x) { return \"collection = \\n\" + JSON.stringify(x, '\\n', 2); })(collection);"
- ],
- "solutions": [
- "var collection = {\n 2548: {\n album: \"Slippery When Wet\",\n artist: \"Bon Jovi\",\n tracks: [ \n \"Let It Rock\", \n \"You Give Love a Bad Name\" \n ]\n },\n 2468: {\n album: \"1999\",\n artist: \"Prince\",\n tracks: [ \n \"1999\", \n \"Little Red Corvette\" \n ]\n },\n 1245: {\n artist: \"Robert Palmer\",\n tracks: [ ]\n },\n 5439: {\n album: \"ABBA Gold\"\n }\n};\n// Keep a copy of the collection for tests\nvar collectionCopy = JSON.parse(JSON.stringify(collection));\n\n// Only change code below this line\nfunction updateRecords(id, prop, value) {\n if(value === \"\") delete collection[id][prop];\n else if(prop === \"tracks\") {\n collection[id][prop] = collection[id][prop] || [];\n collection[id][prop].push(value);\n } else {\n collection[id][prop] = value;\n }\n \n return collection;\n}"
- ],
- "tests": [
- "collection = collectionCopy; assert(updateRecords(5439, \"artist\", \"ABBA\")[5439][\"artist\"] === \"ABBA\", 'message: After updateRecords(5439, \"artist\", \"ABBA\"), artist should be \"ABBA\"');",
- "assert(updateRecords(5439, \"tracks\", \"Take a Chance on Me\")[5439][\"tracks\"].pop() === \"Take a Chance on Me\", 'message: After updateRecords(5439, \"tracks\", \"Take a Chance on Me\"), tracks should have \"Take a Chance on Me\" as the last element.');",
- "updateRecords(2548, \"artist\", \"\"); assert(!collection[2548].hasOwnProperty(\"artist\"), 'message: After updateRecords(2548, \"artist\", \"\"), artist should not be set');",
- "assert(updateRecords(1245, \"tracks\", \"Addicted to Love\")[1245][\"tracks\"].pop() === \"Addicted to Love\", 'message: After updateRecords(1245, \"tracks\", \"Addicted to Love\"), tracks should have \"Addicted to Love\" as the last element.');",
- "assert(updateRecords(2468, \"tracks\", \"Free\")[2468][\"tracks\"][0] === \"1999\", 'message: After updateRecords(2468, \"tracks\", \"Free\"), tracks should have \"1999\" as the first element.');",
- "updateRecords(2548, \"tracks\", \"\"); assert(!collection[2548].hasOwnProperty(\"tracks\"), 'message: After updateRecords(2548, \"tracks\", \"\"), tracks should not be set');"
- ],
- "type": "checkpoint",
- "challengeType": 1,
- "titleEs": "Colección de registros",
- "descriptionEs": [
- "Se te da un objeto que representa (una pequeña parte de) tu colección de grabaciones. Cada álbum es identificado por un número id único y tiene varias propiedades. No todos los álbumes tienen la información completa.",
- "Escribe una función que reciba un id, una propiedad (prop) y un valor (value).",
- "Para el id dado, en la colección collection:",
- "Si el valor value no está en blanco (value !== \"\") y prop no es \"tracks\" entonces actualiza o establece el valor de la propiedad prop.",
- "Si la propiedad prop es \"tracks\" y value no está en blanco, empuja (push) el valor value al final del vector tracks.",
- "Si el valor value está en blanco, elimina esa prop.",
- "Siempre retorna el objeto collection entero.",
- "Nota
No olvides usar notación corchete cuando accedes a propiedades de objetos con variables."
- ]
- },
{
"id": "cf1111c1c11feddfaeb5bdef",
"title": "Iterate with JavaScript For Loops",