diff --git a/curriculum/challenges/espanol/01-responsive-web-design/basic-css/change-a-variable-for-a-specific-area.md b/curriculum/challenges/espanol/01-responsive-web-design/basic-css/change-a-variable-for-a-specific-area.md
index 405c676bf2..15376cef59 100644
--- a/curriculum/challenges/espanol/01-responsive-web-design/basic-css/change-a-variable-for-a-specific-area.md
+++ b/curriculum/challenges/espanol/01-responsive-web-design/basic-css/change-a-variable-for-a-specific-area.md
@@ -11,7 +11,7 @@ dashedName: change-a-variable-for-a-specific-area
Cuando creas tus variables en `:root`, el valor de esa variable quedará establecido para toda la página.
-Luego podrás sobreescribir estas variables, configurándolas de nuevo dentro de un elemento específico.
+Puedes entonces sobreescribir estas variables configurándolas nuevamente con un selector específico.
# --instructions--
@@ -27,7 +27,7 @@ assert(
);
```
-La clase `penguin` no debe contener la propiedad `background-color`
+La clase `penguin` no debe de tener la propiedad `background-color`.
```js
assert(
diff --git a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
index dcb072f9b6..29a2b0c104 100644
--- a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
+++ b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
@@ -11,7 +11,7 @@ dashedName: align-elements-using-the-justify-content-property
Algunas veces los elementos flexibles dentro de un contenedor flexible no llenan todo el espacio del contenedor. Es común querer indicarle al CSS cómo alinear y espaciar los elementos flexibles de una determinada manera. Afortunadamente, la propiedad `justify-content` tiene varias opciones para hacer esto. Pero primero, hay que entender alguna terminología importante antes de revisar dichas opciones.
-[Aquí hay una imagen útil que muestra una fila para ilustrar los conceptos siguientes.](https://www.w3.org/TR/css-flexbox-1/images/flex-direction-terms.svg)
+[Aquí hay una imagen útil del W3C que ilustra los conceptos siguientes para un contenedor 'row' flex.](https://www.w3.org/TR/css-flexbox-1/images/flex-direction-terms.svg)
Recuerda que establecer un contenedor flexible como fila coloca los elementos flexibles uno al lado del otro de izquierda a derecha. Un contenedor flexible establecido como columna coloca los elementos flexibles apilados verticalmente de arriba a abajo. Para cada uno, la dirección en la que están dispuestos los elementos flexibles se llama el **eje principal**. Para una fila, esta es una línea horizontal que recorta cada elemento. Y para una columna, el eje principal es una línea vertical a través de los elementos.
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit.md
index c6ee9f61fc..b55fc9aaed 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit.md
@@ -8,9 +8,9 @@ dashedName: convert-celsius-to-fahrenheit
# --description--
-El algoritmo para convertir de Celsius a Fahrenheit es la temperatura en Celsius multiplicado por `9/5`, más `32`.
+La fórmula para convertir de Celsius a Fahrenheit es la temperatura en Celsius multiplicado por `9/5`, más `32`.
-Se te da una variable `celsius` que representa una temperatura en Celsius. Utiliza la variable `fahrenheit` ya definida y asígnale la temperatura Fahrenheit equivalente a la temperatura Celsius dada. Utiliza el algoritmo mencionado arriba para ayudar a convertir la temperatura en Celsius a Fahrenheit.
+Se te da una variable `celsius` que representa una temperatura en Celsius. Utiliza la variable `fahrenheit` ya definida y asígnale la temperatura Fahrenheit equivalente a la temperatura Celsius dada. Utiliza la fórmula mencionada anteriormente para ayudarte a convertir la temperatura Celsius a Fahrenheit.
# --hints--
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md
index 2d0ba9fb48..e4bf6b4837 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md
@@ -19,7 +19,7 @@ Ambos devuelven `true`.
# --instructions--
-Termina de escribir la función para que devuelva "true" sólo si el objeto pasado contiene los cuatro nombres, `Alan`, `Jeff`, `Sarah` y `Ryan`, y devuelve false de lo contrario.
+Termina de escribir la función para que devuelva `true` si el objeto pasado contiene los cuatro nombres, `Alan`, `Jeff`, `Sarah` and `Ryan` y devuelva `false` en caso contrario.
# --hints--
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/remove-items-using-splice.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/remove-items-using-splice.md
index fe1f9c285e..c39f7349f8 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/remove-items-using-splice.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/remove-items-using-splice.md
@@ -10,7 +10,7 @@ dashedName: remove-items-using-splice
Bien, ya hemos aprendido a eliminar elementos al principio y al final de los arreglos utilizando `shift()` y `pop()`, pero ¿qué pasa si queremos eliminar un elemento de alguna parte del medio? ¿O eliminar más de un elemento a la vez? Pues bien, ahí es donde entra `splice()`. `splice()` nos permite hacer precisamente eso: **eliminar cualquier número de elementos consecutivos** de cualquier parte de un arreglo.
-`splice()` puede tomar hasta 3 parámetros, pero por ahora, nos centraremos sólo en los 2 primeros. Los dos primeros parámetros de `splice()` son enteros que representan índices, o posiciones, del arreglo que llama `splice()`. Y recuerda que los arreglos están *indexados en cero*, por lo que para indicar el primer elemento de un arreglo, usaríamos `0`. El primer parámetro de `splice()` representa el índice del arreglo a partir del cual se empiezan a eliminar los elementos, mientras que el segundo parámetro indica el número de elementos a eliminar. Por ejemplo:
+`splice()` puede tomar hasta 3 parámetros, pero por ahora, nos centraremos sólo en los 2 primeros. Los primeros dos parámetros de `splice()` son enteros que representan índices, o posiciones, de elementos en el arreglo a la que `splice()` está siendo llamado. Y recuerda que los arreglos están *indexados en cero*, por lo que para indicar el primer elemento de un arreglo, usaríamos `0`. El primer parámetro de `splice()` representa el índice del arreglo a partir del cual se empiezan a eliminar los elementos, mientras que el segundo parámetro indica el número de elementos a eliminar. Por ejemplo:
```js
let array = ['today', 'was', 'not', 'so', 'great'];
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md
index 96e7c2919b..e1c9d1ae4b 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md
@@ -19,17 +19,15 @@ Los índices de los arreglos se escriben en la misma notación de corchetes que
```js
const array = [50, 60, 70];
-array[0];
+console.log(array[0]);
const data = array[1];
```
-`array[0]` ahora es `50` y `data` tiene el valor `60`.
-
-**Nota:** No debe haber espacios entre el nombre del arreglo y los corchetes, como `array [0]`. Aunque JavaScript pueda procesar esto correctamente, puedes confundir a otros programadores al leer tu código.
+`console.log(array[0])` imprime `50`, y `data` tiene el valor `60`.
# --instructions--
-Crea una variable llamada `myData` e iguálala al primer valor de `myArray` usando notación de corchetes.
+Crea una variable llamada `myData` y establécela para que sea igual al primer valor de `myArray` usando notación de corchetes.
# --hints--
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md
index 74d1e180a1..340b9db0eb 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md
@@ -31,13 +31,13 @@ assert(
);
```
-Después de `updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me")`, `tracks` debe tener la cadena `Take a Chance on Me` como último elemento.
+Después `updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me")`, `tracks` debe de tener la cadena `Take a Chance on Me` como el último y único elemento.
```js
assert(
- updateRecords(_recordCollection, 5439, 'tracks', 'Take a Chance on Me')[5439][
- 'tracks'
- ].pop() === 'Take a Chance on Me'
+ updateRecords(_recordCollection, 5439, 'tracks', 'Take a Chance on Me') &&
+ _recordCollection[5439]['tracks'].length === 1 &&
+ _recordCollection[5439]['tracks'].pop() === 'Take a Chance on Me'
);
```
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables.md
index e685634483..17f5d499ed 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables.md
@@ -9,7 +9,7 @@ dashedName: understanding-uninitialized-variables
# --description--
-Cuando las variables de JavaScript son declaradas, tienen un valor inicial de `undefined` (indefinido). Si haces una operación matemática en una variable `undefined`, tu resultado será `NaN` lo que significa "Not a Number" (no es un número). Si concatenas una cadena con una variable `undefined`, obtendrás una cadena literal con valor `undefined`.
+Cuando las variables de JavaScript son declaradas, tienen un valor inicial de `undefined` (indefinido). Si haces una operación matemática en una variable `undefined`, tu resultado será `NaN` lo que significa "Not a Number" (no es un número). Si concatenas una cadena con una variable `undefined`, obtendrás una cadena de `undefined`.
# --instructions--
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.md
index ec34c9f089..71d0e997b6 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.md
@@ -18,120 +18,123 @@ Recuerda, puedes acceder a las propiedades del objeto mediante la notación de p
# --hints--
-`truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex")` debe devolver `true`.
+`truthCheck([{name: "Quincy", role: "Founder", isBot: false}, {name: "Naomi", role: "", isBot: false}, {name: "Camperbot", role: "Bot", isBot: true}], "isBot")` debe devolver `false`.
```js
-assert.strictEqual(
- truthCheck(
- [
- { user: 'Tinky-Winky', sex: 'male' },
- { user: 'Dipsy', sex: 'male' },
- { user: 'Laa-Laa', sex: 'female' },
- { user: 'Po', sex: 'female' }
- ],
- 'sex'
- ),
- true
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Quincy", role: "Founder", isBot: false },
+ { name: "Naomi", role: "", isBot: false },
+ { name: "Camperbot", role: "Bot", isBot: true }
+ ],
+ "isBot"), false);
```
-`truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex")` debe devolver `false`.
+`truthCheck([{name: "Quincy", role: "Founder", isBot: false}, {name: "Naomi", role: "", isBot: false}, {name: "Camperbot", role: "Bot", isBot: true}], "name")` debe devolver `true`.
```js
-assert.strictEqual(
- truthCheck(
- [
- { user: 'Tinky-Winky', sex: 'male' },
- { user: 'Dipsy' },
- { user: 'Laa-Laa', sex: 'female' },
- { user: 'Po', sex: 'female' }
- ],
- 'sex'
- ),
- false
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Quincy", role: "Founder", isBot: false },
+ { name: "Naomi", role: "", isBot: false },
+ { name: "Camperbot", role: "Bot", isBot: true }
+ ],
+ "name"), true);
```
-`truthCheck([{"user": "Tinky-Winky", "sex": "male", "age": 0}, {"user": "Dipsy", "sex": "male", "age": 3}, {"user": "Laa-Laa", "sex": "female", "age": 5}, {"user": "Po", "sex": "female", "age": 4}], "age")` debe devolver `false`.
+`truthCheck([{name: "Quincy", role: "Founder", isBot: false}, {name: "Naomi", role: "", isBot: false}, {name: "Camperbot", role: "Bot", isBot: true}], "role")` debe devolver `false`.
```js
-assert.strictEqual(
- truthCheck(
- [
- { user: 'Tinky-Winky', sex: 'male', age: 2 },
- { user: 'Dipsy', sex: 'male', age: 0 },
- { user: 'Laa-Laa', sex: 'female', age: 5 },
- { user: 'Po', sex: 'female', age: 4 }
- ],
- 'age'
- ),
- false
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Quincy", role: "Founder", isBot: false },
+ { name: "Naomi", role: "", isBot: false },
+ { name: "Camperbot", role: "Bot", isBot: true }
+ ],
+ "role"), false);
```
-`truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true}, {"name": "FastForward", "onBoat": null}], "onBoat")` debe devolver `false`.
+`truthCheck([{name: "Pikachu", number: 25, caught: 3}, {name: "Togepi", number: 175, caught: 1}], "number")` debe devolver `true`.
```js
-assert.strictEqual(
- truthCheck(
- [
- { name: 'Pete', onBoat: true },
- { name: 'Repeat', onBoat: true },
- { name: 'FastForward', onBoat: null }
- ],
- 'onBoat'
- ),
- false
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Pikachu", number: 25, caught: 3 },
+ { name: "Togepi", number: 175, caught: 1 },
+ ],
+ "number"), true);
```
-`truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true, "alias": "Repete"}, {"name": "FastForward", "onBoat": true}], "onBoat")` debe devolver `true`.
+`truthCheck([{name: "Pikachu", number: 25, caught: 3}, {name: "Togepi", number: 175, caught: 1}, {name: "MissingNo", number: NaN, caught: 0}], "caught")` debe devolver `false`.
```js
-assert.strictEqual(
- truthCheck(
- [
- { name: 'Pete', onBoat: true },
- { name: 'Repeat', onBoat: true, alias: 'Repete' },
- { name: 'FastForward', onBoat: true }
- ],
- 'onBoat'
- ),
- true
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Pikachu", number: 25, caught: 3 },
+ { name: "Togepi", number: 175, caught: 1 },
+ { name: "MissingNo", number: NaN, caught: 0 },
+ ],
+ "caught"), false);
```
-`truthCheck([{"single": "yes"}], "single")` debe devolver `true`.
+`truthCheck([{name: "Pikachu", number: 25, caught: 3}, {name: "Togepi", number: 175, caught: 1}, {name: "MissingNo", number: NaN, caught: 0}], "number")` debe devolver `false`.
```js
-assert.strictEqual(truthCheck([{ single: 'yes' }], 'single'), true);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Pikachu", number: 25, caught: 3 },
+ { name: "Togepi", number: 175, caught: 1 },
+ { name: "MissingNo", number: NaN, caught: 0 },
+ ],
+ "number"), false);
```
-`truthCheck([{"single": ""}, {"single": "double"}], "single")` debe devolver `false`.
+`truthCheck([{name: "Quincy", username: "QuincyLarson"}, {name: "Naomi", username: "nhcarrigan"}, {name: "Camperbot"}], "username")` debe devolver `false`.
```js
-assert.strictEqual(
- truthCheck([{ single: '' }, { single: 'double' }], 'single'),
- false
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "Quincy", username: "QuincyLarson" },
+ { name: "Naomi", username: "nhcarrigan" },
+ { name: "Camperbot" }
+ ],
+ "username"), false);
```
-`truthCheck([{"single": "double"}, {"single": undefined}], "single")` debe devolver `false`.
+`truthCheck([{name: "freeCodeCamp", users: [{name: "Quincy"}, {name: "Naomi"}]}, {name: "Code Radio", users: [{name: "Camperbot"}]}, {name: "", users: []}], "users")` debe devolver `true`.
```js
-assert.strictEqual(
- truthCheck([{ single: 'double' }, { single: undefined }], 'single'),
- false
-);
+assert.strictEqual(truthCheck(
+ [
+ { name: "freeCodeCamp", users: [{ name: "Quincy" }, { name: "Naomi" }] },
+ { name: "Code Radio", users: [{ name: "Camperbot" }] },
+ { name: "", users: [] },
+ ],
+ "users"), true);
```
-`truthCheck([{"single": "double"}, {"single": NaN}], "single")` debe devolver `false`.
+`truthCheck([{id: 1, data: {url: "https://freecodecamp.org", name: "freeCodeCamp"}}, {id: 2, data: {url: "https://coderadio.freecodecamp.org/", name: "CodeRadio"}}, {id: null, data: {}}], "data")` debe devolver `true`.
```js
-assert.strictEqual(
- truthCheck([{ single: 'double' }, { single: NaN }], 'single'),
- false
-);
+assert.strictEqual(truthCheck(
+ [
+ { id: 1, data: { url: "https://www.freecodecamp.org", name: "freeCodeCamp" } },
+ { id: 2, data: { url: "https://coderadio.freecodecamp.org/", name: "CodeRadio" } },
+ { id: null, data: {} },
+ ],
+ "data"), true);
+```
+
+`truthCheck([{id: 1, data: {url: "https://freecodecamp.org", name: "freeCodeCamp"}}, {id: 2, data: {url: "https://coderadio.freecodecamp.org/", name: "CodeRadio"}}, {id: null, data: {}}], "id")` debe devolver `false`.
+
+```js
+assert.strictEqual(truthCheck(
+ [
+ { id: 1, data: { url: "https://www.freecodecamp.org", name: "freeCodeCamp" } },
+ { id: 2, data: { url: "https://coderadio.freecodecamp.org/", name: "CodeRadio" } },
+ { id: null, data: {} },
+ ],
+ "id"), false);
```
# --seed--
@@ -143,7 +146,7 @@ function truthCheck(collection, pre) {
return pre;
}
-truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");
+truthCheck([{name: "Quincy", role: "Founder", isBot: false}, {name: "Naomi", role: "", isBot: false}, {name: "Camperbot", role: "Bot", isBot: true}], "isBot");
```
# --solutions--
diff --git a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
index a8cef073e6..0c317e4302 100644
--- a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
+++ b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
@@ -9,9 +9,9 @@ dashedName: align-elements-using-the-justify-content-property
# --description--
-Certe volte gli oggetti flex all'interno di un contenitore flex non riempiono tutto lo spazio del contenitore. È comune voler dire a CSS di allineare e spaziare gli elementi flex in una certa maniera. Fortunatamente, la proprietà `justify-content` ha diverse opzioni per farlo. Ma prima, c'è un pò di terminologia importante da comprendere prima di rivedere queste opzioni.
+Certe volte gli oggetti flex all'interno di un contenitore flex non riempiono tutto lo spazio del contenitore. È comune voler dire a CSS di allineare e spaziare gli elementi flex in una certa maniera. Fortunatamente, la proprietà `justify-content` ha diverse opzioni per farlo. Ma prima, c'è un po' di terminologia importante da capire prima di rivedere queste opzioni.
-[Ecco un'immagine molto utile che mostra una riga per illustrare i concetti qui sotto.](https://www.w3.org/TR/css-flexbox-1/images/flex-direction-terms.svg)
+[Ecco una immagine utile da W3C che illustra i concetti sotto per un contenitore 'row' (riga) flex.](https://www.w3.org/TR/css-flexbox-1/images/flex-direction-terms.svg)
Ricorda che l'impostazione di un contenitore flex come riga posiziona gli elementi flex fianco a fianco da sinistra a destra. Un contenitore flex impostato come colonna piazza gli oggetti flex in una pila verticale dall'alto verso il basso. Per ognuno, la direzione in cui sono disposti gli elementi flex è chiamata **asse principale**. Per una riga, si tratta di una linea orizzontale che taglia ogni elemento. E per una colonna, l'asse principale è una linea verticale attraverso gli elementi.
diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md
index d798f846d2..2aa00ea15d 100644
--- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md
+++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/access-array-data-with-indexes.md
@@ -25,11 +25,9 @@ const data = array[1];
`console.log(array[0])` scrive `50`, e `data` ha il valore `60`.
-**Nota:** Non ci dovrebbero essere spazi tra il nome dell'array e le parentesi quadre, come in `array [0]`. Anche se JavaScript è in grado di elaborarlo correttamente, questo potrebbe confondere altri programmatori che leggono il tuo codice.
-
# --instructions--
-Crea una variabile chiamata `myData` e impostala al primo valore di `myArray` usando la notazione a parentesi.
+Crea una variabile chiamata `myData` e imponila uguale al primo valore di `myArray` usando la notazione a parentesi quadre.
# --hints--
@@ -51,7 +49,7 @@ assert(
);
```
-Si dovrebbe accedere ai dati nella variabile `myArray` utilizzando la notazione a parentesi.
+Dovresti accedere ai dati nella variabile `myArray` usando la notazione a parentesi quadre.
```js
assert(
diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md
index e590f6893d..c7ae6c7835 100644
--- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md
+++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/find-the-length-of-a-string.md
@@ -15,7 +15,7 @@ Puoi trovare la lunghezza di un valore `String` scrivendo `.length` dopo la vari
console.log("Alan Peter".length);
```
-Il valore `10` sarà visualizzato nella console.
+Il valore `10` sarà visualizzato nella console. Nota che è contato anche il carattere spazio tra "Alan" e "Peter".
Ad esempio, se avessimo creato una variabile `const firstName = "Ada"`, potremmo scoprire quanto è lunga la stringa `Ada` utilizzando la proprietà `firstName.length`.
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61329d52e5010e08d9b9d66b.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61329d52e5010e08d9b9d66b.md
new file mode 100644
index 0000000000..8f9b0ad1c5
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61329d52e5010e08d9b9d66b.md
@@ -0,0 +1,68 @@
+---
+id: 61329d52e5010e08d9b9d66b
+title: Step 4
+challengeType: 0
+dashedName: step-4
+---
+
+# --description--
+
+Un altro elemento `meta` importante per l'accessibilità e la SEO è la definizione `description`. Il valore dell'attributo `content` è usato dai motori di ricerca per dare una descrizione della tua pagina.
+
+Aggiungi un elemento `meta` con l'attributo `name` impostato a `description`, e dagli un attributo `content` utile.
+
+# --hints--
+
+Dovresti aggiungere un nuovo elemento `meta` a `head`.
+
+```js
+assert.equal(document.querySelectorAll('meta').length, 3);
+```
+
+Dovresti dare a `meta` un attributo `name` con valore di `description`.
+
+```js
+assert.exists(document.querySelector('meta[name="description"]'));
+```
+
+Dovresti dare a `meta` un attributo `content`.
+
+```js
+assert.notEmpty(document.querySelector('meta[name="description"]')?.content);
+```
+
+Il valore dell'attributo `content` non deve superare una lunghezza di 165 caratteri. _Questa è la lunghezza massima della descrizione permessa da Google._
+
+```js
+assert.isAtMost(document.querySelector('meta[name="description"]')?.content?.length, 165);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+--fcc-editable-region--
+
+
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133acc353338c0bba9cb553.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133acc353338c0bba9cb553.md
new file mode 100644
index 0000000000..66fd2b90f4
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133acc353338c0bba9cb553.md
@@ -0,0 +1,63 @@
+---
+id: 6133acc353338c0bba9cb553
+title: Step 5
+challengeType: 0
+dashedName: step-5
+---
+
+# --description--
+
+Infine, nell'elemento `head`, l'elemento `title` è utile ai lettori di schermi per capire il contenuto di una pagina. Inoltre, è una parte importante della _SEO_.
+
+Assegna alla tua pagina un `title` che sia descrittivo e conciso.
+
+# --hints--
+
+Dovresti aggiungere un elemento `title` dentro `head`.
+
+```js
+assert.exists(document.querySelector('head > title'));
+```
+
+Non dovresti avere un `title` più lungo di 60 caratteri.
+
+```js
+assert.isAtMost(document.querySelector('head > title')?.textContent?.length, 60);
+```
+
+Cerca di essere più descrittivo con il tuo elemento `title`. _Suggerimento: Almeno 15 caratteri_
+
+```js
+assert.isAtLeast(document.querySelector('head > title')?.textContent?.length, 15);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+--fcc-editable-region--
+
+
+
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133d11ef548f51f876149e3.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133d11ef548f51f876149e3.md
new file mode 100644
index 0000000000..e5ba472083
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133d11ef548f51f876149e3.md
@@ -0,0 +1,68 @@
+---
+id: 6133d11ef548f51f876149e3
+title: Step 6
+challengeType: 0
+dashedName: step-6
+---
+
+# --description--
+
+La navigazione è una parte fondamentale dell'accessibilità, e i lettori dello schermo si affidano a te per dare struttura alla pagina. Ciò viene realizzato con elementi HTML semantici.
+
+Aggiungi un elemento `header` e un elemento `main` alla tua pagina.
+
+L'elemento `header` verrà utilizzato per introdurre la pagina, oltre a fornire un menù di navigazione.
+
+L'elemento `main` conterrà il contenuto principale della tua pagina.
+
+# --hints--
+
+Dovresti aggiungere un elemento `header` dentro `body`.
+
+```js
+assert.exists(document.querySelector('body > header'));
+```
+
+Dovresti aggiungere un elemento `main` dentro `body`.
+
+```js
+assert.exists(document.querySelector('body > main'));
+```
+
+L'elemento `header` dovrebbe precedere l'elemento `main`.
+
+```js
+assert.exists(document.querySelector('header + main'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e2546d0594208229ada50.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e2546d0594208229ada50.md
new file mode 100644
index 0000000000..4428c42d97
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e2546d0594208229ada50.md
@@ -0,0 +1,93 @@
+---
+id: 613e2546d0594208229ada50
+title: Step 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+All'interno dell'elemento `header`, provedi del contesto per la pagina annidando un elemento `img`, `h1`, e `nav`.
+
+L'`img` dovrebbe puntare al link `https://cdn.freecodecamp.org/platform/universal/fcc_primary.svg` e avere un `id` di `logo`.
+
+L'elemento `h1` dovrebbe contenere il testo `HTML/CSS Quiz`.
+
+# --hints--
+
+Dovresti aggiungere un elemento `img` all'elemento `header`.
+
+```js
+assert.exists(document.querySelector('header > img'));
+```
+
+Dovresti aggiungere un elemento `h1` all'elemento `header`.
+
+```js
+assert.exists(document.querySelector('header > h1'));
+```
+
+Dovresti aggiungere un elemento `nav` all'elemento `header`.
+
+```js
+assert.exists(document.querySelector('header > nav'));
+```
+
+Dovresti posizionare gli elementi `img`, `h1` e `nav` in questo ordine.
+
+```js
+assert.exists(document.querySelector('img + h1 + nav'));
+```
+
+Dovresti dare all'elemento `img` un attributo `src` di `https://cdn.freecodecamp.org/platform/universal/fcc_primary.svg`.
+
+```js
+assert.equal(document.querySelector('img')?.src, 'https://cdn.freecodecamp.org/platform/universal/fcc_primary.svg');
+```
+
+Dovresti dare all'elemento `img` un attributo `id` di `logo`.
+
+```js
+assert.equal(document.querySelector('img')?.id, 'logo');
+```
+
+Dovresti dare all'elemento `h1` il testo `HTML/CSS Quiz`.
+
+```js
+assert.include(document.querySelector('h1')?.innerText?.toLowerCase(), 'html/css quiz');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e275749ebd008e74bb62e.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e275749ebd008e74bb62e.md
new file mode 100644
index 0000000000..be7166bdd6
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e275749ebd008e74bb62e.md
@@ -0,0 +1,66 @@
+---
+id: 613e275749ebd008e74bb62e
+title: Step 8
+challengeType: 0
+dashedName: step-8
+---
+
+# --description--
+
+Una proprietà utile di un _SVG_ (scalable vector graphics - grafica vettoriale scalabile) è che contiene un attributo `path` che permette di scalare l'immagine senza influenzare la risoluzione dell'immagine risultante.
+
+Attualmente, l'elemento `img` sta assumendo la sua dimensione predefinita, che è troppo grande. Ridimensiona l'immagine correttamente usando il suo `id` come selettore e impostando `width` a `max(100px, 18vw)`.
+
+# --hints--
+
+Dovresti usare il selettore `#logo` per selezionare l'elemento `img`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('#logo'));
+```
+
+Dovresti dare a `img` un `width` di `max(100px, 18vw)`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('#logo')?.width, 'max(100px, 18vw)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+
+
+
HTML/CSS Quiz
+
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61408e4ae3e35d08feb260eb.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61408e4ae3e35d08feb260eb.md
new file mode 100644
index 0000000000..8a7ff94bba
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61408e4ae3e35d08feb260eb.md
@@ -0,0 +1,83 @@
+---
+id: 61408e4ae3e35d08feb260eb
+title: Step 11
+challengeType: 0
+dashedName: step-11
+---
+
+# --description--
+
+Cambia il colore del font di `h1` a `#f1be32`, e imposta la dimensione del font a `min(5vw, 1.2em)`.
+
+# --hints--
+
+Dovresti usare il selettore di elemento `h1`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('h1'));
+```
+
+Dovresti dare a `h1` un `color` di `#f1be32`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('h1')?.color, 'rgb(241, 190, 50)');
+```
+
+Dovresti dare a `h1` un `font-size` di `min(5vw, 1.2em)`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('h1')?.fontSize, 'min(5vw, 1.2em)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+
+
+
HTML/CSS Quiz
+
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+
+header {
+ width: 100%;
+ height: 50px;
+ background-color: #1b1b32;
+ display: flex;
+}
+
+#logo {
+ width: max(100px, 18vw);
+ background-color: #0a0a23;
+ aspect-ratio: 35 / 4;
+ padding: 0.4rem;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61408f155e798909b6908712.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61408f155e798909b6908712.md
new file mode 100644
index 0000000000..a761ba3628
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61408f155e798909b6908712.md
@@ -0,0 +1,112 @@
+---
+id: 61408f155e798909b6908712
+title: Step 12
+challengeType: 0
+dashedName: step-12
+---
+
+# --description--
+
+Per abilitare la navigazione sulla pagina, aggiungi un elenco puntato con i tre seguenti elementi:
+
+- `INFO`
+- `HTML`
+- `CSS`
+
+Il testo degli elementi della lista dovrebbe essere racchiuso in tag ancora.
+
+# --hints--
+
+Dovresti annidare un elemento `ul` dentro `nav`.
+
+```js
+assert.equal(document.querySelectorAll('nav > ul')?.length, 1);
+```
+
+Dovresti annidare tre elementi `li` dentro l'elemento `ul`.
+
+```js
+assert.equal(document.querySelectorAll('nav > ul > li')?.length, 3);
+```
+
+Dovresti annidare un elemento `a` dentro ogni elemento `li`.
+
+```js
+assert.equal(document.querySelectorAll('nav > ul > li > a')?.length, 3);
+```
+
+Dovresti dare al tuo primo elemento `a` il testo `INFO`.
+
+```js
+assert.equal(document.querySelectorAll('nav > ul > li > a')?.[0]?.textContent, 'INFO');
+```
+
+Dovresti dare al tuo secondo elemento `a` il testo `HTML`.
+
+```js
+assert.equal(document.querySelectorAll('nav > ul > li > a')?.[1]?.textContent, 'HTML');
+```
+
+Dovresti dare al tuo terzo elemento `a` un testo `CSS`.
+
+```js
+assert.equal(document.querySelectorAll('nav > ul > li > a')?.[2]?.textContent, 'CSS');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+
+
+
HTML/CSS Quiz
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+
+header {
+ width: 100%;
+ height: 50px;
+ background-color: #1b1b32;
+ display: flex;
+}
+
+#logo {
+ width: max(100px, 18vw);
+ background-color: #0a0a23;
+ aspect-ratio: 35 / 4;
+ padding: 0.4rem;
+}
+
+h1 {
+ color: #f1be32;
+ font-size: min(5vw, 1.2em);
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61435e3c0679a306c20f1acc.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61435e3c0679a306c20f1acc.md
new file mode 100644
index 0000000000..ff16094ab5
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61435e3c0679a306c20f1acc.md
@@ -0,0 +1,125 @@
+---
+id: 61435e3c0679a306c20f1acc
+title: Step 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+Per poter navigare dentro la pagina, dai ad ogni elemento ancora un `href` corrispondente all'`id` degli elementi `h2`.
+
+# --hints--
+
+Dovresti dare al primo elemento `a` un `href` di `#student-info`.
+
+```js
+assert.equal(document.querySelectorAll('a')?.[0]?.getAttribute('href'), '#student-info');
+```
+
+Dovresti dare al tuo secondo elemento `a` un `href` di `#html-questions`.
+
+```js
+assert.equal(document.querySelectorAll('a')?.[1]?.getAttribute('href'), '#html-questions');
+```
+
+Dovresti dare al tuo terzo elemento `a` un `href` di `#css-questions`.
+
+```js
+assert.equal(document.querySelectorAll('a')?.[2]?.getAttribute('href'), '#css-questions');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+
+
+
HTML/CSS Quiz
+
+
+
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+
+header {
+ width: 100%;
+ height: 50px;
+ background-color: #1b1b32;
+ display: flex;
+}
+
+#logo {
+ width: max(100px, 18vw);
+ background-color: #0a0a23;
+ aspect-ratio: 35 / 4;
+ padding: 0.4rem;
+}
+
+h1 {
+ color: #f1be32;
+ font-size: min(5vw, 1.2em);
+}
+
+nav {
+ width: 50%;
+ max-width: 300px;
+ height: 50px;
+}
+
+nav > ul {
+ display: flex;
+ justify-content: space-evenly;
+}
+
+h1,
+h2 {
+ font-family: Verdana, Tahoma;
+}
+
+h2 {
+ border-bottom: 4px solid #dfdfe2;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61487b77d4a37707073a64e5.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61487b77d4a37707073a64e5.md
new file mode 100644
index 0000000000..aa61cc66d2
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/61487b77d4a37707073a64e5.md
@@ -0,0 +1,261 @@
+---
+id: 61487b77d4a37707073a64e5
+title: Step 48
+challengeType: 0
+dashedName: step-48
+---
+
+# --description--
+
+Quando la larghezza dello schermo è piccola, l'elemento `h1` non si mette su più righe come dovrebbe. Allinea al centro il testo di `h1`.
+
+Poi, dai a `main` un padding che renda completamente visibile l'intestazione di sezione `Student Info`.
+
+# --hints--
+
+Dovresti dare ad `h1` un `text-align` di `center`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('h1')?.textAlign, 'center');
+```
+
+Dovresti aggiungere un selettore `main` per selezionare l'elemento `main`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('main'));
+```
+
+Dovresti dare a `main` un `padding-top` di almeno `25px`.
+
+```js
+assert.isAtLeast(Number(new __helpers.CSSHelp(document).getStyle('main')?.paddingTop?.replace(/\D+/, '')), 25);
+```
+
+Dovresti cambiare solo il valore di `padding-top`.
+
+```js
+assert.isEmpty(new __helpers.CSSHelp(document).getStyle('main')?.paddingBottom);
+assert.isEmpty(new __helpers.CSSHelp(document).getStyle('main')?.paddingLeft);
+assert.isEmpty(new __helpers.CSSHelp(document).getStyle('main')?.paddingRight);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+
+
+