From e9512cb96820ce198e304bb4609c3693a24d0794 Mon Sep 17 00:00:00 2001 From: camperbot Date: Sun, 31 Oct 2021 23:08:44 -0700 Subject: [PATCH] chore(i18n,curriculum): update translations (#44072) --- ...ad-only-variable-with-the-const-keyword.md | 9 +- .../find-the-length-of-a-string.md | 15 ++-- .../global-scope-and-functions.md | 12 +-- .../iterate-odd-numbers-with-a-for-loop.md | 16 ++-- .../iterate-with-javascript-for-loops.md | 16 ++-- .../iterate-with-javascript-while-loops.md | 18 ++-- .../manipulate-arrays-with-pop.md | 16 ++-- .../manipulate-arrays-with-shift.md | 16 ++-- .../manipulate-arrays-with-unshift.md | 9 +- .../modify-array-data-with-indexes.md | 11 +-- .../basic-javascript/nesting-for-loops.md | 27 +++--- .../return-early-pattern-for-functions.md | 14 +-- ...returning-boolean-values-from-functions.md | 8 +- ...to-find-the-first-character-in-a-string.md | 14 +-- ...-to-find-the-last-character-in-a-string.md | 14 +-- ...d-the-nth-to-last-character-in-a-string.md | 14 +-- ...se-conditional-logic-with-if-statements.md | 5 +- ...pare-scopes-of-the-var-and-let-keywords.md | 20 +++-- .../mutate-an-array-declared-with-const.md | 10 ++- ...actor-global-variables-out-of-functions.md | 24 ++--- ...er-method-to-extract-data-from-an-array.md | 13 ++- ...ap-method-to-extract-data-from-an-array.md | 15 ++-- .../build-a-markdown-previewer.md | 2 +- .../react/access-props-using-this.props.md | 87 ++++++++----------- .../react/compose-react-components.md | 2 +- .../react/create-a-controlled-form.md | 2 +- ...state-in-the-user-interface-another-way.md | 2 +- .../react/set-state-with-this.setstate.md | 2 +- ...-query-helpers-to-narrow-search-results.md | 8 +- ...ad-only-variable-with-the-const-keyword.md | 9 +- curriculum/dictionaries/espanol/comments.json | 2 +- 31 files changed, 208 insertions(+), 224 deletions(-) diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md index 08e8f0f6b7..7aea8239f1 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md @@ -71,13 +71,10 @@ assert.match(code, /const\s+FCC/); ## --seed-contents-- ```js -// Only change code below this line -var fCC = "freeCodeCamp"; -var fact = "is cool!"; -// Only change code above this line - +var fCC = "freeCodeCamp"; // Change this line +var fact = "is cool!"; // Change this line fact = "is awesome!"; -console.log(fCC, fact); +console.log(fCC, fact); // Change this line ``` # --solutions-- diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md index 8e08c329f4..a1b318057a 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md @@ -17,7 +17,7 @@ console.log("Alan Peter".length); El valor `10` se mostrará en la consola. -Por ejemplo, si creamos una variable `var firstName = "Ada"`, podríamos averiguar la longitud de la cadena `Ada` usando la propiedad `firstName.length`. +Por ejemplo, si creamos una variable `const firstName = "Ada"`, podríamos averiguar la longitud de la cadena `Ada` usando la propiedad `firstName.length`. # --instructions-- @@ -29,8 +29,8 @@ No debes cambiar las declaraciones de variables en la sección `// Setup`. ```js assert( - code.match(/var lastNameLength = 0;/) && - code.match(/var lastName = "Lovelace";/) + code.match(/let lastNameLength = 0;/) && + code.match(/const lastName = "Lovelace";/) ); ``` @@ -52,18 +52,17 @@ assert(code.match(/=\s*lastName\.length/g) && !code.match(/lastName\s*=\s*8/)); ```js // Setup -var lastNameLength = 0; -var lastName = "Lovelace"; +let lastNameLength = 0; +const lastName = "Lovelace"; // Only change code below this line - lastNameLength = lastName; ``` # --solutions-- ```js -var lastNameLength = 0; -var lastName = "Lovelace"; +let lastNameLength = 0; +const lastName = "Lovelace"; lastNameLength = lastName.length; ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions.md index 8bebf29c5f..5dc2a7d5cd 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions.md @@ -11,13 +11,13 @@ dashedName: global-scope-and-functions En JavaScript, el ámbito se refiere a la visibilidad de las variables. Las variables definidas fuera de un bloque de función tienen un ámbito Global. Esto significa que pueden ser observadas desde cualquier lugar en tu código JavaScript. -Las variables que se usan sin la palabra clave `var` se crean automáticamente en el ámbito `global`. Esto puede crear consecuencias no intencionadas en cualquier lugar de tu código o al volver a ejecutar una función. Siempre debes declarar tus variables con `var`. +Las variables que se declaran sin las palabras clave `let` o `const` se crean automáticamente en el ámbito `global`. Esto puede crear consecuencias no intencionadas en cualquier lugar de tu código o al volver a ejecutar una función. Siempre debes declarar tus variables con `let` o `const`. # --instructions-- -Usando `var`, declara una variable global llamada `myGlobal` fuera de cualquier función. Inicialízala con un valor de `10`. +Usando `let` o `const`, declara una variable global llamada `myGlobal` fuera de cualquier función. Inicialízala con un valor de `10`. -Dentro de la función `fun1`, asigna `5` a `oopsGlobal` ***sin*** usar la palabra clave `var`. +Dentro de la función `fun1`, asigna `5` a `oopsGlobal` ***sin*** usar las palabras clave `let` o `const`. # --hints-- @@ -33,10 +33,10 @@ assert(typeof myGlobal != 'undefined'); assert(myGlobal === 10); ``` -`myGlobal` debe declararse usando la palabra clave `var` +`myGlobal` debe declararse usando las palabras clave `let` o `const` ```js -assert(/var\s+myGlobal/.test(code)); +assert(/(let|const)\s+myGlobal/.test(code)); ``` `oopsGlobal` debe ser una variable global y tener un valor de `5` @@ -109,7 +109,7 @@ function fun2() { # --solutions-- ```js -var myGlobal = 10; +const myGlobal = 10; function fun1() { oopsGlobal = 5; diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-odd-numbers-with-a-for-loop.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-odd-numbers-with-a-for-loop.md index 76f6685260..261fbf0e19 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-odd-numbers-with-a-for-loop.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-odd-numbers-with-a-for-loop.md @@ -14,13 +14,14 @@ Los bucles "for" no tienen que iterar de uno en uno a la vez. Al cambiar nuestra Empezaremos en `i = 0` y realizaremos el bucle mientras `i < 10`. Incrementaremos `i` en 2 cada bucle utilizando `i += 2`. ```js -var ourArray = []; -for (var i = 0; i < 10; i += 2) { +const ourArray = []; + +for (let i = 0; i < 10; i += 2) { ourArray.push(i); } ``` -`ourArray` ahora contendrá `[0,2,4,6,8]`. Cambiemos nuestra `initialization` (inicialización) para que podamos contar por números impares. +`ourArray` ahora contendrá `[0, 2, 4, 6, 8]`. Cambiemos nuestra `initialization` (inicialización) para que podamos contar por números impares. # --instructions-- @@ -34,7 +35,7 @@ Debes utilizar un bucle `for` para esto. assert(/for\s*\([^)]+?\)/.test(code)); ``` -`myArray` debe ser igual a `[1,3,5,7,9]`. +`myArray` debe ser igual a `[1, 3, 5, 7, 9]`. ```js assert.deepEqual(myArray, [1, 3, 5, 7, 9]); @@ -52,16 +53,17 @@ if(typeof myArray !== "undefined"){(function(){return myArray;})();} ```js // Setup -var myArray = []; +const myArray = []; // Only change code below this line + ``` # --solutions-- ```js -var myArray = []; -for (var i = 1; i < 10; i += 2) { +const myArray = []; +for (let i = 1; i < 10; i += 2) { myArray.push(i); } ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops.md index a73939326a..4346854144 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops.md @@ -26,13 +26,14 @@ La expresión final se ejecuta al final de cada iteración del bucle, antes de l En el siguiente ejemplo inicializamos con `i = 0` e iteramos mientras nuestra condición `i < 5` es verdadera. Incrementaremos `i` por `1` en cada iteración de bucle con `i++` como nuestra expresión final. ```js -var ourArray = []; -for (var i = 0; i < 5; i++) { +const ourArray = []; + +for (let i = 0; i < 5; i++) { ourArray.push(i); } ``` -`ourArray` ahora tendrá el valor `[0,1,2,3,4]`. +`ourArray` ahora tendrá el valor `[0, 1, 2, 3, 4]`. # --instructions-- @@ -46,7 +47,7 @@ Debes usar un bucle `for` para esto. assert(/for\s*\([^)]+?\)/.test(code)); ``` -`myArray` debe ser igual a `[1,2,3,4,5]`. +`myArray` debe ser igual a `[1, 2, 3, 4, 5]`. ```js assert.deepEqual(myArray, [1, 2, 3, 4, 5]); @@ -64,16 +65,17 @@ if (typeof myArray !== "undefined"){(function(){return myArray;})();} ```js // Setup -var myArray = []; +const myArray = []; // Only change code below this line + ``` # --solutions-- ```js -var myArray = []; -for (var i = 1; i < 6; i++) { +const myArray = []; +for (let i = 1; i < 6; i++) { myArray.push(i); } ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-while-loops.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-while-loops.md index df67df635f..304be9cc5e 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-while-loops.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-while-loops.md @@ -14,9 +14,10 @@ Puedes ejecutar el mismo código múltiples veces usando un bucle. El primer tipo de bucle que aprenderemos se llama bucle `while` porque ejecuta una condición específica mientras esta sea verdadera, y se detiene una vez que esa condición ya no sea verdadera. ```js -var ourArray = []; -var i = 0; -while(i < 5) { +const ourArray = []; +let i = 0; + +while (i < 5) { ourArray.push(i); i++; } @@ -38,7 +39,7 @@ Debes utilizar un bucle `while` para esto. assert(code.match(/while/g)); ``` -`myArray` debe ser igual a `[5,4,3,2,1,0]`. +`myArray` debe ser igual a `[5, 4, 3, 2, 1, 0]`. ```js assert.deepEqual(myArray, [5, 4, 3, 2, 1, 0]); @@ -56,17 +57,18 @@ if(typeof myArray !== "undefined"){(function(){return myArray;})();} ```js // Setup -var myArray = []; +const myArray = []; // Only change code below this line + ``` # --solutions-- ```js -var myArray = []; -var i = 5; -while(i >= 0) { +const myArray = []; +let i = 5; +while (i >= 0) { myArray.push(i); i--; } diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md index a728ca7bd9..a46a61cc68 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md @@ -16,8 +16,8 @@ Otra manera de cambiar los datos en un arreglo es con la función `.pop()`. Cualquier tipo de entrada puede ser sacada de un arreglo: números, cadenas, incluso arreglos anidados. ```js -var threeArr = [1, 4, 6]; -var oneDown = threeArr.pop(); +const threeArr = [1, 4, 6]; +const oneDown = threeArr.pop(); console.log(oneDown); console.log(threeArr); ``` @@ -26,7 +26,7 @@ El primer `console.log` mostrará el valor `6` y el segundo mostrará el valor ` # --instructions-- -Utiliza la función `.pop()` para eliminar el último elemento de `myArray`, asignando el valor sacado a `removedFromMyArray`. +Utiliza la función `.pop()` para eliminar el último elemento de `myArray`, y asigna el valor sacado a un variable nuevo `removedFromMyArray`. # --hints-- @@ -69,22 +69,22 @@ assert( ## --after-user-code-- ```js -(function(y, z){return 'myArray = ' + JSON.stringify(y) + ' & removedFromMyArray = ' + JSON.stringify(z);})(myArray, removedFromMyArray); +if (typeof removedFromMyArray !== 'undefined') (function(y, z){return 'myArray = ' + JSON.stringify(y) + ' & removedFromMyArray = ' + JSON.stringify(z);})(myArray, removedFromMyArray); ``` ## --seed-contents-- ```js // Setup -var myArray = [["John", 23], ["cat", 2]]; +const myArray = [["John", 23], ["cat", 2]]; // Only change code below this line -var removedFromMyArray; + ``` # --solutions-- ```js -var myArray = [["John", 23], ["cat", 2]]; -var removedFromMyArray = myArray.pop(); +const myArray = [["John", 23], ["cat", 2]]; +const removedFromMyArray = myArray.pop(); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md index b64f050154..57d7b929fe 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md @@ -16,15 +16,15 @@ Ahí es donde entra `.shift()`. Funciona igual que `.pop()`, excepto que elimina Ejemplo: ```js -var ourArray = ["Stimpson", "J", ["cat"]]; -var removedFromOurArray = ourArray.shift(); +const ourArray = ["Stimpson", "J", ["cat"]]; +const removedFromOurArray = ourArray.shift(); ``` `removedFromOurArray` tendrá una cadena con valor `Stimpson` y `ourArray` tendrá `["J", ["cat"]]`. # --instructions-- -Utiliza la función `.shift()` para eliminar el primer elemento de `myArray`, asignando el valor "desplazado" a `removedFromMyArray`. +Utiliza la función `.shift()` para eliminar el primer elemento de `myArray`, y asigna el valor "desplazado" a un variable nuevo `removedFromMyArray`. # --hints-- @@ -65,24 +65,24 @@ assert( ## --after-user-code-- ```js -(function(y, z){return 'myArray = ' + JSON.stringify(y) + ' & removedFromMyArray = ' + JSON.stringify(z);})(myArray, removedFromMyArray); +if (typeof removedFromMyArray !== 'undefined') (function(y, z){return 'myArray = ' + JSON.stringify(y) + ' & removedFromMyArray = ' + JSON.stringify(z);})(myArray, removedFromMyArray); ``` ## --seed-contents-- ```js // Setup -var myArray = [["John", 23], ["dog", 3]]; +const myArray = [["John", 23], ["dog", 3]]; // Only change code below this line -var removedFromMyArray; + ``` # --solutions-- ```js -var myArray = [["John", 23], ["dog", 3]]; +const myArray = [["John", 23], ["dog", 3]]; // Only change code below this line -var removedFromMyArray = myArray.shift(); +const removedFromMyArray = myArray.shift(); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md index 006acbb9da..e6599e4ea5 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md @@ -16,7 +16,7 @@ No solo puedes desplazar (`shift`) elementos del comienzo de un arreglo, tambié Ejemplo: ```js -var ourArray = ["Stimpson", "J", "cat"]; +const ourArray = ["Stimpson", "J", "cat"]; ourArray.shift(); ourArray.unshift("Happy"); ``` @@ -25,7 +25,7 @@ Después del `shift`, `ourArray` tendrá el valor `["J", "cat"]`. Después del ` # --instructions-- -Añade `["Paul",35]` al principio de la variable `myArray` usando `unshift()`. +Agrega `["Paul", 35]` al principio de la variable `myArray` usando `unshift()`. # --hints-- @@ -63,16 +63,17 @@ assert( ```js // Setup -var myArray = [["John", 23], ["dog", 3]]; +const myArray = [["John", 23], ["dog", 3]]; myArray.shift(); // Only change code below this line + ``` # --solutions-- ```js -var myArray = [["John", 23], ["dog", 3]]; +const myArray = [["John", 23], ["dog", 3]]; myArray.shift(); myArray.unshift(["Paul", 35]); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md index 7916d8fbb1..c7911540f2 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md @@ -9,12 +9,12 @@ dashedName: modify-array-data-with-indexes # --description-- -A diferencia de las cadenas, las entradas de los arreglos son mutables y pueden cambiarse libremente. +A diferencia de las cadenas, las entradas de los arreglos son mutables y pueden cambiarse libremente, incluso si el arreglo fue declarado con `const`. **Ejemplo** ```js -var ourArray = [50,40,30]; +const ourArray = [50, 40, 30]; ourArray[0] = 15; ``` @@ -28,7 +28,7 @@ Modifica los datos almacenados en el índice `0` de `myArray` a un valor de `45` # --hints-- -`myArray` ahora debe ser `[45,64,99]`. +`myArray` ahora debe ser `[45, 64, 99]`. ```js assert( @@ -73,14 +73,15 @@ if(typeof myArray !== "undefined"){(function(){return myArray;})();} ```js // Setup -var myArray = [18,64,99]; +const myArray = [18, 64, 99]; // Only change code below this line + ``` # --solutions-- ```js -var myArray = [18,64,99]; +const myArray = [18, 64, 99]; myArray[0] = 45; ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md index bb49ec22f7..e375391965 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md @@ -12,11 +12,12 @@ dashedName: nesting-for-loops Si tienes un arreglo multidimensional, puedes utilizar la misma lógica que aprendimos anteriormente para recorrer tanto el arreglo como cualquier sub-arreglo. Aquí hay un ejemplo: ```js -var arr = [ - [1,2], [3,4], [5,6] +const arr = [ + [1, 2], [3, 4], [5, 6] ]; -for (var i=0; i < arr.length; i++) { - for (var j=0; j < arr[i].length; j++) { + +for (let i = 0; i < arr.length; i++) { + for (let j = 0; j < arr[i].length; j++) { console.log(arr[i][j]); } } @@ -30,13 +31,13 @@ Modifica la función `multiplyAll` para que devuelva el producto de todos los n # --hints-- -`multiplyAll([[1],[2],[3]])` debe devolver `6` +`multiplyAll([[1], [2], [3]])` debe devolver `6` ```js assert(multiplyAll([[1], [2], [3]]) === 6); ``` -`multiplyAll([[1,2],[3,4],[5,6,7]])` debe devolver `5040` +`multiplyAll([[1, 2], [3, 4], [5, 6, 7]])` debe devolver `5040` ```js assert( @@ -48,7 +49,7 @@ assert( ); ``` -`multiplyAll([[5,1],[0.2, 4, 0.5],[3, 9]])` debe devolver `54` +`multiplyAll([[5, 1], [0.2, 4, 0.5], [3, 9]])` debe devolver `54` ```js assert( @@ -66,28 +67,26 @@ assert( ```js function multiplyAll(arr) { - var product = 1; + let product = 1; // Only change code below this line // Only change code above this line return product; } -multiplyAll([[1,2],[3,4],[5,6,7]]); +multiplyAll([[1, 2], [3, 4], [5, 6, 7]]); ``` # --solutions-- ```js function multiplyAll(arr) { - var product = 1; - for (var i = 0; i < arr.length; i++) { - for (var j = 0; j < arr[i].length; j++) { + let product = 1; + for (let i = 0; i < arr.length; i++) { + for (let j = 0; j < arr[i].length; j++) { product *= arr[i][j]; } } return product; } - -multiplyAll([[1,2],[3,4],[5,6,7]]); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md index 71b650257a..7d1507c081 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md @@ -33,43 +33,43 @@ Recuerda que [`undefined` es una palabra clave](https://www.freecodecamp.org/lea # --hints-- -`abTest(2,2)` debe devolver un número +`abTest(2, 2)` debe devolver un número ```js assert(typeof abTest(2, 2) === 'number'); ``` -`abTest(2,2)` debe devolver `8` +`abTest(2, 2)` debe devolver `8` ```js assert(abTest(2, 2) === 8); ``` -`abTest(-2,2)` debe devolver `undefined` +`abTest(-2, 2)` debe devolver `undefined` ```js assert(abTest(-2, 2) === undefined); ``` -`abTest(2,-2)` debe devolver `undefined` +`abTest(2, -2)` debe devolver `undefined` ```js assert(abTest(2, -2) === undefined); ``` -`abTest(2,8)` debe devolver `18` +`abTest(2, 8)` debe devolver `18` ```js assert(abTest(2, 8) === 18); ``` -`abTest(3,3)` debe devolver `12` +`abTest(3, 3)` debe devolver `12` ```js assert(abTest(3, 3) === 12); ``` -`abTest(0,0)` debe devolver `0` +`abTest(0, 0)` debe devolver `0` ```js assert(abTest(0, 0) === 0); diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md index bc29770b84..400b79963f 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md @@ -14,7 +14,7 @@ Podrás recordar que en [Comparación con el operador de igualdad](/learn/javasc A veces la gente usa una sentencia `if/else` para hacer una comparación, como esta: ```js -function isEqual(a,b) { +function isEqual(a, b) { if (a === b) { return true; } else { @@ -26,7 +26,7 @@ function isEqual(a,b) { Pero hay una mejor manera de hacer esto. Puesto que `===` devuelve `true` o `false`, podemos devolver el resultado de la comparación: ```js -function isEqual(a,b) { +function isEqual(a, b) { return a === b; } ``` @@ -37,13 +37,13 @@ Corrige la función `isLess` para eliminar las sentencias `if/else`. # --hints-- -`isLess(10,15)` debe devolver `true` +`isLess(10, 15)` debe devolver `true` ```js assert(isLess(10, 15) === true); ``` -`isLess(15,10)` debe devolver `false` +`isLess(15, 10)` debe devolver `false` ```js assert(isLess(15, 10) === false); diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md index a10004f1ce..251cb737e2 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md @@ -13,13 +13,13 @@ La notación de corchetes es una forma de obtener un carácter en un La mayoría de lenguajes de programación modernos, como JavaScript, no empiezan a contar desde 1 como lo hacen los humanos. Empiezan desde 0. Esto se conoce como indexación basada en cero. -Por ejemplo, el carácter en el índice 0 de la palabra `Charles` es `C`. Así que si declaramos `var firstName = "Charles"`, puedes obtener el valor de la primera letra de la cadena usando `firstName[0]`. +Por ejemplo, el carácter en el índice 0 de la palabra `Charles` es `C`. Así que si declaramos `const firstName = "Charles"`, puedes obtener el valor de la primera letra de la cadena usando `firstName[0]`. Ejemplo: ```js -var firstName = "Charles"; -var firstLetter = firstName[0]; +const firstName = "Charles"; +const firstLetter = firstName[0]; ``` `firstLetter` tendrá una cadena con valor `C`. @@ -56,8 +56,8 @@ assert(code.match(/firstLetterOfLastName\s*?=\s*?lastName\[.*?\]/)); ```js // Setup -var firstLetterOfLastName = ""; -var lastName = "Lovelace"; +let firstLetterOfLastName = ""; +const lastName = "Lovelace"; // Only change code below this line firstLetterOfLastName = lastName; // Change this line @@ -66,8 +66,8 @@ firstLetterOfLastName = lastName; // Change this line # --solutions-- ```js -var firstLetterOfLastName = ""; -var lastName = "Lovelace"; +let firstLetterOfLastName = ""; +const lastName = "Lovelace"; // Only change code below this line firstLetterOfLastName = lastName[0]; diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md index e4ff79e531..cbd72ed853 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md @@ -11,13 +11,13 @@ dashedName: use-bracket-notation-to-find-the-last-character-in-a-string Con el fin de obtener la última letra de una cadena, puedes restar uno a la longitud del texto. -Por ejemplo, sí `var firstName = "Ada"`, puedes obtener el valor de la última letra de la cadena usando `firstName[firstName.length - 1]`. +Por ejemplo, sí `const firstName = "Ada"`, puedes obtener el valor de la última letra de la cadena usando `firstName[firstName.length - 1]`. Ejemplo: ```js -var firstName = "Ada"; -var lastLetter = firstName[firstName.length - 1]; +const firstName = "Ada"; +const lastLetter = firstName[firstName.length - 1]; ``` `lastLetter` tendrá una cadena con valor `a`. @@ -54,15 +54,15 @@ assert(code.match(/\.length/g).length > 0); ```js // Setup -var lastName = "Lovelace"; +const lastName = "Lovelace"; // Only change code below this line -var lastLetterOfLastName = lastName; // Change this line +const lastLetterOfLastName = lastName; // Change this line ``` # --solutions-- ```js -var lastName = "Lovelace"; -var lastLetterOfLastName = lastName[lastName.length - 1]; +const lastName = "Lovelace"; +const lastLetterOfLastName = lastName[lastName.length - 1]; ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md index 9768d2c296..e8a7788cfe 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md @@ -11,13 +11,13 @@ dashedName: use-bracket-notation-to-find-the-nth-to-last-character-in-a-string Puedes usar el mismo principio que acabamos de usar para recuperar el último carácter de una cadena para recuperar el carácter enésimo final. -Por ejemplo, puedes obtener el valor de la antepenúltima letra de la cadena `var firstName = "Augusta"` usando `firstName[firstName.length - 3]` +Por ejemplo, puedes obtener el valor de la antepenúltima letra de la cadena `const firstName = "Augusta"` usando `firstName[firstName.length - 3]` Ejemplo: ```js -var firstName = "Augusta"; -var thirdToLastLetter = firstName[firstName.length - 3]; +const firstName = "Augusta"; +const thirdToLastLetter = firstName[firstName.length - 3]; ``` `thirdToLastLetter` tendrá una cadena con valor `s`. @@ -54,15 +54,15 @@ assert(code.match(/\.length/g).length > 0); ```js // Setup -var lastName = "Lovelace"; +const lastName = "Lovelace"; // Only change code below this line -var secondToLastLetterOfLastName = lastName; // Change this line +const secondToLastLetterOfLastName = lastName; // Change this line ``` # --solutions-- ```js -var lastName = "Lovelace"; -var secondToLastLetterOfLastName = lastName[lastName.length - 2]; +const lastName = "Lovelace"; +const secondToLastLetterOfLastName = lastName[lastName.length - 2]; ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md index 275e06d7a5..1c2d0f3387 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md @@ -9,7 +9,7 @@ dashedName: use-conditional-logic-with-if-statements # --description-- -Las sentencias `If` son utilizadas para tomar decisiones en el código. La palabra clave `if` le dice a JavaScript que ejecute el código entre llaves bajo ciertas condiciones, definidas en los paréntesis. Estas condiciones son conocidas como condiciones booleanas (`Boolean`) y sólo pueden ser `true` o `false`. +Las sentencias `if` son utilizadas para tomar decisiones en el código. La palabra clave `if` le dice a JavaScript que ejecute el código entre llaves bajo ciertas condiciones, definidas en los paréntesis. Estas condiciones son conocidas como condiciones booleanas (`Boolean`) y sólo pueden ser `true` o `false`. Cuando la condición se evalúa como `true`, el programa ejecuta el comando dentro de las llaves. Cuando la condición booleana se evalúa como `false`, la sentencia dentro de las llaves no se ejecutará. @@ -22,10 +22,11 @@ Cuando la condición se evalúa como `true`, el programa ejecuta el comando dent ```js function test (myCondition) { if (myCondition) { - return "It was true"; + return "It was true"; } return "It was false"; } + test(true); test(false); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/compare-scopes-of-the-var-and-let-keywords.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/compare-scopes-of-the-var-and-let-keywords.md index 075f1c6029..78dcb12f16 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/compare-scopes-of-the-var-and-let-keywords.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/compare-scopes-of-the-var-and-let-keywords.md @@ -8,9 +8,11 @@ dashedName: compare-scopes-of-the-var-and-let-keywords # --description-- -Cuando declaras una variable con la palabra `var`, esta es declarada globalmente o localmente sí es declarada dentro de una función. +Si no estás familiarizado con `let`, echa un vistazo a [este desafío](/learn/javascript-algorithms-and-data-structures/basic-javascript/explore-differences-between-the-var-and-let-keywords). -La palabra `let` se comporta de forma similar, pero con algunas funciones adicionales. Cuanto declaras una variable con la palabra `let` dentro de un bloque, una declaración o expresión. Su alcance está limitado a ese bloque, declaración o expresión. +Cuando declaras una variable con la palabra clave `var`, esta es declarada globalmente o localmente sí es declarada dentro de una función. + +La palabra clave `let` se comporta de forma similar, pero con algunas características adicionales. Cuanto declaras una variable con la palabra clave `let` dentro de un bloque, una declaración o expresión. Su alcance está limitado a ese bloque, declaración o expresión. Por ejemplo: @@ -25,7 +27,7 @@ console.log(i); Aquí la consola mostrará los valores `[0, 1, 2]` y `3`. -Con la palabra clave `var`, `i` es declarada globalmente. Así, cuando se ejecuta la instrucción `i++`, la variable global es actualizada. Este código es similar al siguiente: +Con la palabra clave `var`, `i` es declarada globalmente. Así, cuando `i++` es ejecutado, la variable global es actualizada. Este código es similar al siguiente: ```js var numArray = []; @@ -55,7 +57,7 @@ console.log(printNumTwo()); Aquí la consola mostrará el valor `3`. -Como puedes ver, `printNumTwo()` imprime 3 y no 2. Esto se debe a que el valor asignado a `i` se actualizó y la función `printNumTwo()` devuelve el valor de la variable `i` global y no el valor que tenía `i` cuando la función fue creada en el bucle for. La palabra clave `let` no sigue este comportamiento: +Como puedes ver, `printNumTwo()` imprime 3 y no 2. Esto es porque el valor asignado a `i` fue actualizado y la función `printNumTwo()` devuelve el global de `i` y no el valor que tenía `i` cuando la función fue creada en el bucle for. La palabra clave `let` no sigue este comportamiento: ```js let printNumTwo; @@ -70,15 +72,15 @@ console.log(printNumTwo()); console.log(i); ``` -Aquí la consola mostrará el valor `2` y el error `i is not defined`. +Aquí la consola mostrará el valor `2` y el error que `i is not defined`. -`i` no está definida, porque no ha sido declarada en el ámbito global. Solo ha sido declarada dentro de la instrucción de bucle `for`. `printNumTwo()` devolvió el valor correcto porque la palabra clave `let` creó tres variables `i` diferentes con valores únicos (0, 1 y 2) dentro de la declaración de bucle. +`i` no está definida, porque no ha sido declarada en el ámbito global. Solo ha sido declarada dentro de la sentencia de bucle `for`. `printNumTwo()` devolvió el valor correcto, porque tres variables diferentes de `i` con valores únicos (0, 1 y 2) fueron creadas por la palabra clave `let` dentro de la sentencia del bucle. # --instructions-- -Corrige el código para que la variable `i`, declarado en la sentencia `if` sea una variable separada de la variable `i`, declarada en la primera línea de la función. Asegúrate de no utilizar la palabra clave `var` en ninguna parte de tu código. +Corrige el código para que la variable `i`, declarada en la sentencia `if` sea una variable separada de la variable `i`, declarada en la primera línea de la función. Asegúrate de no utilizar la palabra clave `var` en ninguna parte de tu código. -Este ejercicio está diseñado para ilustrar la diferencia entre cómo las palabras clave `var` y `let` asignan alcance a la variable declarada. Al programar una función similar a la utilizada en este ejercicio, suele ser mejor usar diferentes nombres de variable para evitar confusiones. +Este ejercicio está diseñado para ilustrar la diferencia entre como las palabras claves `var` y `let` asignan ámbito a la variable declarada. Cuando programas una función similar a la que es usada en este ejercicio, es a menudo mejor usar diferentes nombres de variables para evitar confusión. # --hints-- @@ -88,7 +90,7 @@ Este ejercicio está diseñado para ilustrar la diferencia entre cómo las palab assert(!code.match(/var/g)); ``` -La variable `i` declarada en la instrucción `if` debe ser igual a la cadena `block scope`. +La variable `i` declarada en la sentencia `if` debe ser igual a la cadena `block scope`. ```js assert(code.match(/(i\s*=\s*).*\s*.*\s*.*\1('|")block\s*scope\2/g)); diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/mutate-an-array-declared-with-const.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/mutate-an-array-declared-with-const.md index e65e7b47a6..4177543636 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/mutate-an-array-declared-with-const.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/es6/mutate-an-array-declared-with-const.md @@ -8,11 +8,13 @@ dashedName: mutate-an-array-declared-with-const # --description-- -La declaración `const` tiene muchos casos de uso, en el actual JavaScript. +Si no estás familiarizado con `const`, echa un vistazo a [este desafío](/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword). -Algunos desarrolladores, prefieren asignar todas sus variables utilizando `const` por defecto, salvo que sepan que necesitarán reasignar el valor. Sólo en ese caso, utilizan `let`. +La declaración `const` tiene muchos casos de uso, en el JavaScript moderno. -Sin embargo, es importante comprender que los objetos (incluyendo arreglos y funciones), asignados a una variable usando `const` siguen siendo mutables. Usar la declaración `const` sólo previene la reasignación del identificador de una variable. +Algunos desarrolladores prefieren asignar todas sus variables utilizando `const` por defecto, a menos que sepan que necesitarán reasignar el valor. Solo en ese caso, utilizan `let`. + +Sin embargo, es importante comprender que los objetos (incluyendo arreglos y funciones), asignados a una variable usando `const` siguen siendo mutables. Usar la declaración `const` solo previene la reasignación del identificador de una variable. ```js const s = [5, 6, 7]; @@ -23,7 +25,7 @@ console.log(s); `s = [1, 2, 3]` resultará en un error. El `console.log` mostrará el valor `[5, 6, 45]`. -Como puedes ver, puedes mutar el objeto `[5, 6, 7]` en sí mismo y la variable `s` seguirá apuntado al arreglo alterado `[5, 6, 45]`. Como en todos los arreglos, los elementos del arreglo en `s` son mutables, pero debido a que se utilizó `const`, no puedes utilizar el identificador de la variable `s` para apuntar a un arreglo diferente usando el operador de asignación. +Como puedes ver, puedes mutar el objeto `[5, 6, 7]` en sí mismo y la variable `s` seguirá apuntado al arreglo alterado `[5, 6, 45]`. Como todos los arreglos, los elementos del arreglo en `s` son mutables, pero debido a que se utilizó `const`, no puedes utilizar el identificador de la variable `s` para apuntar a un arreglo diferente usando el operador de asignación. # --instructions-- diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md index 65847a471c..32fe722727 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md @@ -10,7 +10,7 @@ dashedName: refactor-global-variables-out-of-functions Hasta ahora, hemos visto dos principios distintos para la programación funcional: -1) No alteres una variable u objeto: crea nuevas variables y objetos y devuélvelos, si es necesario, desde una función. Pista: usar algo como `var newArr = arrVar`, donde `arrVar` es un arreglo, simplemente creará una referencia a la variable existente y no una copia. Así que cambiar un valor en `newArr` cambiaría el valor en `arrVar`. +1) No alteres una variable u objeto: crea nuevas variables y objetos y devuélvelos, si es necesario, desde una función. Pista: usar algo como `const newArr = arrVar`, donde `arrVar` es un arreglo, simplemente creará una referencia a la variable existente y no una copia. Así que cambiar un valor en `newArr` cambiaría el valor en `arrVar`. 2) Declara parámetros de función: cualquier cálculo dentro de una función depende sólo de los argumentos pasados a la función y no en ningún objeto o variable global. @@ -86,7 +86,7 @@ assert( ```js // The global variable -var bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"]; +const bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"]; // Change code below this line function add (bookName) { @@ -99,7 +99,7 @@ function add (bookName) { // Change code below this line function remove (bookName) { - var book_index = bookList.indexOf(bookName); + const book_index = bookList.indexOf(bookName); if (book_index >= 0) { bookList.splice(book_index, 1); @@ -109,9 +109,9 @@ function remove (bookName) { } } -var newBookList = add(bookList, 'A Brief History of Time'); -var newerBookList = remove(bookList, 'On The Electrodynamics of Moving Bodies'); -var newestBookList = remove(add(bookList, 'A Brief History of Time'), 'On The Electrodynamics of Moving Bodies'); +const newBookList = add(bookList, 'A Brief History of Time'); +const newerBookList = remove(bookList, 'On The Electrodynamics of Moving Bodies'); +const newestBookList = remove(add(bookList, 'A Brief History of Time'), 'On The Electrodynamics of Moving Bodies'); console.log(bookList); ``` @@ -120,13 +120,13 @@ console.log(bookList); ```js // The global variable -var bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"]; +const bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"]; -function add (bookList, bookName) { +function add(bookList, bookName) { return [...bookList, bookName]; } -function remove (bookList, bookName) { +function remove(bookList, bookName) { const bookListCopy = [...bookList]; const bookNameIndex = bookList.indexOf(bookName); if (bookNameIndex >= 0) { @@ -135,7 +135,7 @@ function remove (bookList, bookName) { return bookListCopy; } -var newBookList = add(bookList, 'A Brief History of Time'); -var newerBookList = remove(bookList, 'On The Electrodynamics of Moving Bodies'); -var newestBookList = remove(add(bookList, 'A Brief History of Time'), 'On The Electrodynamics of Moving Bodies'); +const newBookList = add(bookList, 'A Brief History of Time'); +const newerBookList = remove(bookList, 'On The Electrodynamics of Moving Bodies'); +const newestBookList = remove(add(bookList, 'A Brief History of Time'), 'On The Electrodynamics of Moving Bodies'); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.md index e41ff8376b..7c9f76bfca 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-filter-method-to-extract-data-from-an-array.md @@ -55,7 +55,7 @@ El código no debe utilizar el bucle `for`. assert(!code.match(/for\s*?\([\s\S]*?\)/g)); ``` -`filteredList` debe ser igual a `[{"title": "Inception","rating": "8.8"},{"title": "Interstellar","rating": "8.6"},{"title": "The Dark Knight","rating": "9.0"},{"title": "Batman Begins","rating": "8.3"}]`. +`filteredList` debe ser igual a `[{"title": "Inception", "rating": "8.8"}, {"title": "Interstellar", "rating": "8.6"}, {"title": "The Dark Knight", "rating": "9.0"}, {"title": "Batman Begins", "rating": "8.3"}]`. ```js assert.deepEqual(filteredList, [ @@ -72,7 +72,7 @@ assert.deepEqual(filteredList, [ ```js // The global variable -var watchList = [ +const watchList = [ { "Title": "Inception", "Year": "2010", @@ -187,7 +187,7 @@ var watchList = [ // Only change code below this line -var filteredList; +const filteredList = ""; // Only change code above this line @@ -197,8 +197,7 @@ console.log(filteredList); # --solutions-- ```js -// The global variable -var watchList = [ +const watchList = [ { "Title": "Inception", "Year": "2010", @@ -311,7 +310,5 @@ var watchList = [ } ]; -// Only change code below this line -let filteredList = watchList.filter(e => e.imdbRating >= 8).map( ({Title: title, imdbRating: rating}) => ({title, rating}) ); -// Only change code above this line +const filteredList = watchList.filter(e => e.imdbRating >= 8).map( ({Title: title, imdbRating: rating}) => ({title, rating}) ); ``` diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.md index 81f51748ec..df993a4be3 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/functional-programming/use-the-map-method-to-extract-data-from-an-array.md @@ -61,7 +61,7 @@ Tu código debe usar el método `map`. assert(code.match(/\.map/g)); ``` -`ratings` debe ser igual a `[{"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"}]`. +`ratings` debe ser igual a `[{"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"}]`. ```js assert.deepEqual(ratings, [ @@ -79,7 +79,7 @@ assert.deepEqual(ratings, [ ```js // The global variable -var watchList = [ +const watchList = [ { "Title": "Inception", "Year": "2010", @@ -194,9 +194,9 @@ var watchList = [ // Only change code below this line -var ratings = []; -for(var i=0; i < watchList.length; i++){ - ratings.push({title: watchList[i]["Title"], rating: watchList[i]["imdbRating"]}); +const ratings = []; +for (let i = 0; i < watchList.length; i++) { + ratings.push({title: watchList[i]["Title"], rating: watchList[i]["imdbRating"]}); } // Only change code above this line @@ -207,8 +207,7 @@ console.log(JSON.stringify(ratings)); # --solutions-- ```js -// The global variable -var watchList = [ +const watchList = [ { "Title": "Inception", "Year": "2010", @@ -321,7 +320,7 @@ var watchList = [ } ]; -var ratings = watchList.map(function(movie) { +const ratings = watchList.map(function(movie) { return { title: movie["Title"], rating: movie["imdbRating"] diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md b/curriculum/challenges/espanol/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md index 74844ce587..2135c88c3b 100644 --- a/curriculum/challenges/espanol/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md +++ b/curriculum/challenges/espanol/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md @@ -22,7 +22,7 @@ Puedes utilizar cualquier combinación de HTML, JavaScript, CSS, Bootstrap, SASS **Historia de usuario #4:** Cuando introduzco markdown tipo GitHub en el elemento `#editor`, el texto es renderizado como HTML en el elemento `#preview` mientras escribo (PISTA: No necesitas analizar markdown tú mismo: puedes importar la librería "Marked" ). -**Historia de usuario #5:** Cuando mi previsualizador de markdown se carga, el texto por defecto en el campo `#editor` debe contener un markdown válido que represente al menos uno de los siguientes elementos: un encabezado (tamaño H1), un subencabezado (tamaño H2), un enlace, código en línea, un bloque de código, un elemento de lista, una cita de bloques (blockquote), una imagen y texto en negrita. +**Historia de usuario #5:** Cuando la primera vez que mi previsualizador de lenguaje de marcado se carga, el texto por defecto en el campo `#editor` debe contener un lenguaje de marcado válido que represente al menos uno de los siguientes elementos: un encabezado (tamaño H1), un subencabezado (tamaño H2), un enlace, código en línea, un bloque de código, un elemento de lista, una cita en bloque, una imagen y texto en negrita. **Historia de usuario #6:** Cuando mi previsualizador de markdown se carga, el markdown predeterminado en el campo `#editor` debe ser renderizado como HTML en el elemento `#preview`. diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/react/access-props-using-this.props.md b/curriculum/challenges/espanol/03-front-end-development-libraries/react/access-props-using-this.props.md index fb1170ea92..442868c0fc 100644 --- a/curriculum/challenges/espanol/03-front-end-development-libraries/react/access-props-using-this.props.md +++ b/curriculum/challenges/espanol/03-front-end-development-libraries/react/access-props-using-this.props.md @@ -14,67 +14,54 @@ Cada vez que se hace referencia a un componente de clase en sí mismo, se utiliz # --instructions-- -Renderiza una instancia del componente `ReturnTempPassword` en el componente padre `ResetPassword`. Aquí, dale a `ReturnTempPassword` una propiedad de `tempPassword` y asígnale un valor de una cadena que tenga al menos 8 caracteres. Dentro del componente hijo, `ReturnTempPassword`, accede a la propiedad `tempPassword` dentro de las etiquetas `strong` para asegurarte que el usuario vea una contraseña temporal. +Renderiza una instancia del componente `Welcome` en el componente padre `App`. Aquí, dale a `Welcome` un prop de `name` y asígnale un valor de una cadena. Dentro del hijo, `Welcome`, accede el prop `name` dentro de las etiquetas `strong`. # --hints-- -El componente `ResetPassword` debe devolver un único elemento `div`. +El componente `App` debe devolver un solo elemento `div`. ```js assert( (function () { - const mockedComponent = Enzyme.mount(React.createElement(ResetPassword)); + const mockedComponent = Enzyme.mount(React.createElement(App)); return mockedComponent.children().type() === 'div'; })() ); ``` -El cuarto componente hijo de `ResetPassword` debe ser el componente `ReturnTempPassword`. +El hijo de `App` debe ser el componente `Welcome`. ```js assert( (function () { - const mockedComponent = Enzyme.mount(React.createElement(ResetPassword)); + const mockedComponent = Enzyme.mount(React.createElement(App)); return ( - mockedComponent.children().childAt(3).name() === 'ReturnTempPassword' + mockedComponent.children().childAt(0).name() === 'Welcome' ); })() ); ``` -El componente `ReturnTempPassword` debe tener una propiedad llamada `tempPassword`. +El componente `Welcome` debe tener un prop llamada `name`. ```js assert( (function () { - const mockedComponent = Enzyme.mount(React.createElement(ResetPassword)); - return mockedComponent.find('ReturnTempPassword').props().tempPassword; + const mockedComponent = Enzyme.mount(React.createElement(App)); + return mockedComponent.find('Welcome').props().name; })() ); ``` -La propiedad `tempPassword` de `ReturnTempPassword` debe ser igual a una cadena de al menos 8 caracteres. +El componente `Welcome` debe mostrar la cadena que pasas como el `name` prop dentro de las etiquetas `strong`. ```js assert( (function () { - const mockedComponent = Enzyme.mount(React.createElement(ResetPassword)); - const temp = mockedComponent.find('ReturnTempPassword').props() - .tempPassword; - return typeof temp === 'string' && temp.length >= 8; - })() -); -``` - -El componente `ReturnTempPassword` debe mostrar la contraseña creada en la propiedad `tempPassword` dentro de las etiquetas `strong`. - -```js -assert( - (function () { - const mockedComponent = Enzyme.mount(React.createElement(ResetPassword)); + const mockedComponent = Enzyme.mount(React.createElement(App)); return ( mockedComponent.find('strong').text() === - mockedComponent.find('ReturnTempPassword').props().tempPassword + mockedComponent.find('Welcome').props().name ); })() ); @@ -85,13 +72,13 @@ assert( ## --after-user-code-- ```jsx -ReactDOM.render(, document.getElementById('root')) +ReactDOM.render(, document.getElementById('root')) ``` ## --seed-contents-- ```jsx -class ReturnTempPassword extends React.Component { +class App extends React.Component { constructor(props) { super(props); @@ -100,14 +87,14 @@ class ReturnTempPassword extends React.Component { return (
{ /* Change code below this line */ } -

Your temporary password is:

+ { /* Change code above this line */ }
); } }; -class ResetPassword extends React.Component { +class Welcome extends React.Component { constructor(props) { super(props); @@ -115,11 +102,8 @@ class ResetPassword extends React.Component { render() { return (
-

Reset Password

-

We've generated a new temporary password for you.

-

Please reset this password from your account settings ASAP.

{ /* Change code below this line */ } - +

Hello, !

{ /* Change code above this line */ }
); @@ -130,7 +114,7 @@ class ResetPassword extends React.Component { # --solutions-- ```jsx -class ReturnTempPassword extends React.Component { +class Welcome extends React.Component { constructor(props) { super(props); @@ -138,28 +122,27 @@ class ReturnTempPassword extends React.Component { render() { return (
-

Your temporary password is: {this.props.tempPassword}

-
- ); - } -}; - -class ResetPassword extends React.Component { - constructor(props) { - super(props); - - } - render() { - return ( -
-

Reset Password

-

We've generated a new temporary password for you.

-

Please reset this password from your account settings ASAP.

{ /* Change code below this line */ } - +

Hello, {this.props.name}!

{ /* Change code above this line */ }
); } }; + +class App extends React.Component { + constructor(props) { + super(props); + + } + render() { + return ( +
+ { /* Change code below this line */ } + + { /* Change code above this line */ } +
+ ); + } +}; ``` diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/react/compose-react-components.md b/curriculum/challenges/espanol/03-front-end-development-libraries/react/compose-react-components.md index 1a0b31f41b..9927f2b45d 100644 --- a/curriculum/challenges/espanol/03-front-end-development-libraries/react/compose-react-components.md +++ b/curriculum/challenges/espanol/03-front-end-development-libraries/react/compose-react-components.md @@ -14,7 +14,7 @@ A medida que los desafíos continúan utilizando composiciones más complejas co En el editor de código, el componente `TypesOfFood` ya está incluyendo (renderizando) un componente llamado `Vegetables`. Además, también está el componente `Fruits` del último desafío. -Anida dos componentes dentro de `Fruits`: primero `NonCitrus` y luego `Citrus`. Ambos componentes se te proporcionan en segundo plano. A continuación, anida el componente de clase `Fruits` en el componente `TypesOfFood`, debajo del encabezado (header) `h1` y encima de `Vegetables`. El resultado debe ser una serie de componentes anidados, que utiliza dos tipos de componentes diferentes. +Anida dos componentes dentro de `Fruits`: primero `NonCitrus` y luego `Citrus`. Ambos componentes se te proporcionan en segundo plano. A continuación, anida el componente de clase `Fruits` en el componente `TypesOfFood`, debajo del encabezado `h1` y encima de `Vegetables`. El resultado debe ser una serie de componentes anidados, que utiliza dos tipos de componentes diferentes. # --hints-- diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/react/create-a-controlled-form.md b/curriculum/challenges/espanol/03-front-end-development-libraries/react/create-a-controlled-form.md index 477d2a6e0d..e740de3ea6 100644 --- a/curriculum/challenges/espanol/03-front-end-development-libraries/react/create-a-controlled-form.md +++ b/curriculum/challenges/espanol/03-front-end-development-libraries/react/create-a-controlled-form.md @@ -109,7 +109,7 @@ assert( ); ``` -El encabezado `h1` debe renderizar el valor del campo `submit` del estado del componente. +El encabezado `h1` debe renderizar el valor del campo `submit` desde el estado del componente. ```js (() => { diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/react/render-state-in-the-user-interface-another-way.md b/curriculum/challenges/espanol/03-front-end-development-libraries/react/render-state-in-the-user-interface-another-way.md index f8b45bb0c3..917ff06623 100644 --- a/curriculum/challenges/espanol/03-front-end-development-libraries/react/render-state-in-the-user-interface-another-way.md +++ b/curriculum/challenges/espanol/03-front-end-development-libraries/react/render-state-in-the-user-interface-another-way.md @@ -44,7 +44,7 @@ La etiqueta `h1` renderizada debe incluir una referencia a `{name}`. assert(/

\n*\s*\{\s*name\s*\}\s*\n*<\/h1>/.test(getUserInput('index'))); ``` -El encabezado `h1` renderizado debe contener texto renderizado desde el state del componente. +El encabezado renderizado `h1` sólo debe contener texto renderizado del estado del componente. ```js async () => { diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/react/set-state-with-this.setstate.md b/curriculum/challenges/espanol/03-front-end-development-libraries/react/set-state-with-this.setstate.md index dff7302ea5..dc6ceabf44 100644 --- a/curriculum/challenges/espanol/03-front-end-development-libraries/react/set-state-with-this.setstate.md +++ b/curriculum/challenges/espanol/03-front-end-development-libraries/react/set-state-with-this.setstate.md @@ -41,7 +41,7 @@ assert( assert(Enzyme.mount(React.createElement(MyComponent)).find('h1').length === 1); ``` -El encabezado `h1` renderizado debe contener texto renderizado desde el state del componente. +El encabezado renderizado `h1` sólo debe contener texto renderizado del estado del componente. ```js async () => { diff --git a/curriculum/challenges/espanol/05-back-end-development-and-apis/mongodb-and-mongoose/chain-search-query-helpers-to-narrow-search-results.md b/curriculum/challenges/espanol/05-back-end-development-and-apis/mongodb-and-mongoose/chain-search-query-helpers-to-narrow-search-results.md index 12be099f8a..8131ff0f85 100644 --- a/curriculum/challenges/espanol/05-back-end-development-and-apis/mongodb-and-mongoose/chain-search-query-helpers-to-narrow-search-results.md +++ b/curriculum/challenges/espanol/05-back-end-development-and-apis/mongodb-and-mongoose/chain-search-query-helpers-to-narrow-search-results.md @@ -1,6 +1,6 @@ --- id: 587d7fb9367417b2b2512c12 -title: Chain Search Query Helpers to Narrow Search Results +title: Auxiliares de consulta de búsqueda en cadena para restringir los resultados de búsqueda challengeType: 2 forumTopicId: 301533 dashedName: chain-search-query-helpers-to-narrow-search-results @@ -8,15 +8,15 @@ dashedName: chain-search-query-helpers-to-narrow-search-results # --description-- -If you don’t pass the callback as the last argument to `Model.find()` (or to the other search methods), the query is not executed. You can store the query in a variable for later use. This kind of object enables you to build up a query using chaining syntax. The actual db search is executed when you finally chain the method `.exec()`. You always need to pass your callback to this last method. There are many query helpers, here we'll use the most commonly used. +Si no pasas la función callback como el último argumento para `Model.find()` (o hacia otro método de búsqueda), la consulta no se ejecuta. Puedes almacenar la consulta en una variable para su posterior uso. Este tipo de objeto te permite construir la consulta usando sintaxis de encadenamiento. La búsqueda real en la base de datos se ejecuta cuando finalmente encadena el método `.exec()`. Siempre necesitas pasar tu función callback a este último método. Hay muchas ayudas de consulta, aquí usaremos el método comúnmente usado. # --instructions-- -Modify the `queryChain` function to find people who like the food specified by the variable named `foodToSearch`. Sort them by `name`, limit the results to two documents, and hide their age. Chain `.find()`, `.sort()`, `.limit()`, `.select()`, and then `.exec()`. Pass the `done(err, data)` callback to `exec()`. +Modifica la función `queryChain` para encontrar a gente que le gusta la comida especificada por la variable denominada `foodToSearch`. Ordénalos por `name`, limita los resultados para dos documentos, y oculta su edad. Encadena `.find()`, `.sort()`, `.limit()`, `.select()`, y entonces `.exec()`. Pasa la función callback `done(err, data)` a `exec()`. # --hints-- -Chaining query helpers should succeed +Las ayudas de consulta de encadenamiento deben tener éxito ```js (getUserInput) => diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md index 4144ea4cec..b84a12b0ae 100644 --- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md +++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md @@ -71,13 +71,10 @@ assert.match(code, /const\s+FCC/); ## --seed-contents-- ```js -// Only change code below this line -var fCC = "freeCodeCamp"; -var fact = "is cool!"; -// Only change code above this line - +var fCC = "freeCodeCamp"; // Change this line +var fact = "is cool!"; // Change this line fact = "is awesome!"; -console.log(fCC, fact); +console.log(fCC, fact); // Change this line ``` # --solutions-- diff --git a/curriculum/dictionaries/espanol/comments.json b/curriculum/dictionaries/espanol/comments.json index db49c71fed..a76aaa9972 100644 --- a/curriculum/dictionaries/espanol/comments.json +++ b/curriculum/dictionaries/espanol/comments.json @@ -84,7 +84,7 @@ "fhe9m4": "Sitios sociales", "za434b": "La tabla de barras apiladas de entrenamiento semanal", "7c1fv9": "La tabla de barras apiladas irá aquí", - "r44ovx": "tabs es un arreglo de títulos de cada sítio abierto dentro de la ventana", + "r44ovx": "tabs es un arreglo de títulos de cada sitio abierto dentro de la ventana", "cl8peb": "arreglo de prueba:", "1xi3cv": "La variable global", "3gc01a": "El archivo main.scss",