Basic JavaScript - Josej2r/JavaScript_Algorithms_and_Data_Structures_Certification GitHub Wiki

Basic JavaScript

Introduction to JavaScript

JavaScript es un lenguaje de programación de alto nivel que admiten todos los navegadores web modernos. También es una de las tecnologías principales de la web, junto con HTML y CSS que pueden haber aprendido anteriormente. Esta sección cubrirá conceptos básicos de JavaScript, que van desde variables y aritmética hasta objetos y bucles.

Upcoming Lessons

Comment Your JavaScript Code

Los comentarios son líneas de código que JavaScript ignorará intencionalmente. Los comentarios son una excelente manera de dejar notas para usted y para otras personas que luego necesitarán averiguar qué hace ese código.

Hay dos maneras de escribir comentarios en JavaScript.

Usando // le indicará a JavaScript que ignore el resto del texto de la línea actual:

//This is a in-line comment.

Puede hacer un comentario de varias líneas que comiencen con /* y termine con */ .

/* This is a 
multi-line comment*/

Best Practice

A medida que escribe el código, debe agregar comentarios regularmente para aclarar la función de partes de su código. Un buen comentario puede ayudar a comunicar la intención de su código, tanto para los demás como para su futuro.

Intente crear un comentario de cada tipo.

El código con la solución se encuentra aquí: Download

Declare JavaScript Variables

En informática, los datos son cualquier cosa que sea significativa para la computadora. JavaScript proporciona siete tipos de datos diferentes que son undefined, null, boolean, string, symbol, number y object.

Por ejemplo, los ordenadores distinguen entre el número 12, y cadenas strings como "12", "dog" o "123 cats", que son colecciones de caracteres. Las computadoras pueden realizar operaciones matemáticas en un número, pero no en un string.

Las Variables permiten a las computadoras almacenar y manipular datos de forma dinámica. Lo hacen mediante el uso de una label para señalar los datos en lugar de utilizar los datos en sí. Cualquiera de los siete tipos de datos puede almacenarse en una variable.

Las Variables son similares a las variables x e y que se usan en matemáticas, lo que significa que son un nombre simple para representar los datos a los que nos referimos. Las variables de computadora difieren de las variables matemáticas en que pueden almacenar diferentes valores en diferentes momentos.

Le decimos a JavaScript que cree o declare una variable colocando la palabra clave var delante de ella así:

var ourName;

ese código crea una variable, llamada ourName. En JavaScript terminamos las declaraciones con un punto y coma. Los nombres de las variables pueden estar formadas por números, letras, $ o _ , pero no pueden contener espacios ni comenzar con un número.

Use la palabra var, para crear una variable llamada myName.

El código con la solución se encuentra aquí:Download

Storing Values with the Assignment Operator

En JavaScript, puede almacenar un valor en una variable con el operador de asignación (=).

myVariable = 5;

Esto asigna el valor del número 5 a la variable, myVariable.

La asignación va siempre de derecha a izquierda. Todo a la derecha del operador = se resuelve antes de asignar el valor a la variable de la izquierda del operados.

myVar = 5;
myNum = myVar;

Esto asigna 5 a myVar y myVar a myNum.

Asigne el valor 7 a la variable a y luego asigne el contenido de a a la variable b.

El código con la solución se encuentra aquí:Download

Initializing Variables with the Assignment Operator

Es común inicializar una variable a un valor inicial en la misma línea que se declara.

var myVar = 0;

Crea una nueva variable llamada myVar y le asigna un valor inicial de 0.

Defina una variable a con un var e inicialícela en un valor de 9.

El código con la solución se encuentra aquí:Download

Understanding Uninitialized Variables

Cuando se declaran las variables de JavaScript, tienen un valor inicial de undefined. Si realiza una operación matemática en una variable undifined, su resultado será Nan, que significa, Not a Number. Si concatena un string con una variable undefined, obtendrá un string "undefined".

Inicialice las tres variables a, b y c, con 5, 10 y "I am a" respectivamente para que no estén indefinidas.

El código con la solución se encuentra aquí:Download

Understanding Case Sensitivity in Variables

En JavaScript, todas las variables y nombres de funciones distinguen entre mayúsculas y minúsculas. Esto significa que la capitalización importa.

MYVAR no es lo mismo que MyVar ni myvar. Es posible tener múltiples variables distintas con el mismo nombre pero con una carcasa diferente. Se recomienda encarecidamente que, en aras de la claridad, no utilice esta forma de lenguaje.

Best Practice

Escribe nombres de variables en JavaScript en camelCase. En camelCase, los nombres de variables de varias palabras tienen la primera palabra en minúscula y la primera letra de cada palabra subsiguiente está en mayúscula.

Ejemplos:

var someVariable;
var anotherVariableName;
var thisVariableNameIsSoLong;

Modifique las declaraciones y asignaciones existentes para que sus nombres usen camelCase. No cree ninguna variable nueva.

El código con la solución se encuentra aquí:Download

Add Two Numbers with JavaScript

Number es un tipo de datos en JavaScript que representa datos numéricos.

Ahora intentemos agregar dos números usando JavaScript.

JavaScript usa el símbolo + como operador de suma cuando se coloca entre dos números.

Ejemplo:

myVar = 5 + 10; // assigned 15

Cambie el 0 para que la suma sea igual a 20.

El código con la solución se encuentra aquí:Download

Subtract One Number from Another with JavaScript

También podemos restar un número de otro. JavaScript usa el símbolo - para la resta.

Ejemplo:

myVar = 12 - 6; // assigned 6

Cambie el 0 para que la diferencia sea 12.

El código con la solución se encuentra aquí:Download

Multiply Two Numbers with JavaScript

También podemos multiplicar un número por otro. JavaScript usa el símbolo * para la multiplicación de dos números.

Ejemplo:

myVar = 13 * 13; // assigned 169

Cambie el 0 para que el producto sea 80.

El código con la solución se encuentra aquí:Download

Divide One Number by Another with JavaScriptPassed

También podemos dividir un número por otro. JavaScript usa el símbolo / para la división.

Ejemplo:

myVar = 16 / 2; // assigned 8

Cambie el 0 para que quotient sea igual a 2.

El código con la solución se encuentra aquí:Download

Increment a Number with JavaScript

Puedes incrementar o agregar fácilmente uno a una variable con el operador ++.

i++

es igual que

i = i + 1:

Nota: Toda la línea se convierte en i++, eliminando la necesidad del signo igual.

Cambie el código para usar el operador ++ en myVar.

El código con la solución se encuentra aquí:Download

Decrement a Number with JavaScript

Puede decrementar o disminuir fácilmente una variable en uno con el operador --.

i--;

es equivalente a

i = i -1;

Nota: Toda la línea se convierte en i--; eliminando la necesidad del signo igual.

Cambie el código para usar el operador -- en myVar.

El código con la solución se encuentra aquí:Download

Create Decimal Numbers with JavaScript

También podemos almacenar números decimales en variables. Los números decimales a veces se denominan números reales se pueden representar con precisión en como flotante. Esto puede conducir a errores de redondeo.

Nota: No todos los números reales se pueden representar con precisión en como flotante. Esto puede conducir a errores de redondeo.

Cree una variable myDecimal y asígnele un valor decimal con una parte fraccionaria (por ejemplo 5.7).

El código con la solución se encuentra aquí:Download

Multiply Two Decimals with JavaScript

En JavaScript, también puede realizar cálculos con números decimales, al igual que los números enteros.

Multipliquemos dos decimales para obtener su producto.

Cambie 0.0 para que el producto sea igual a 5.0.

El código con la solución se encuentra aquí:Download

Divide One Decimal by Another with JavaScript

Ahora dividamos un decimal por otro.

Cambia 0.0 para que el cociente sea igual a 2.2.

El código con la solución se encuentra aquí:Download

Finding a Remainder in JavaScript

El operador % da el resto de la división entre dos números.

Ejemplo:

5 % 2 = 1 because
Math.floor(5 / 2) = 2 (Quotient)
2 * 2 = 4
5 - 4 = 1 (Remainder)

Uso.

En matemáticas, se puede verificar que un número sea par o impar marcando el resto de la división del número entre 2.

17 % 2 = 1 (17 is Odd)
48 % 2 = 0 (48 is Even)

Nota El operador remainder a veces se denomina incorrectamente operador de modulo. Es muy similar al módulo, pero no funciona correctamente con números negativos.

Establezca el remainder igual al resto de 11 dividido por 3 utilizando el operador resto.

El código con la solución se encuentra aquí:Download

Compound Assignment With Augmented Addition

En programación, es común usar asignaciones para modificar el contenido de una variable. Recuerde que todo a la derecha del signo igual se evalúa primero, por lo que podemos decir:

myVar = myVar + 5;

Para agregar 5 a myVar. Dado que este es un patrón tan común, hay operadores que realizan tanto una operación matemática como una asignación en un solo paso.

Uno de esos operadores es +=.

var myVar = 1;
myVar += 5;
console.log(myVar); // Returns 6

Convierta las asignaciones para a, b y c para usar el operador +=.

El código con la solución se encuentra aquí:Download

Compound Assignment With Augmented Subtraction

Al igual que el operador +=, -= resta un número de una variable.

myVar = myVar - 5;

restará 5 de myVar. Esto puede reescribirse como:

myVar -= 5;

Convierte las asignaciones para a, b y c para usar el operador -=.

El código con la solución se encuentra aquí:Download

Compound Assignment With Augmented Multiplication

El operador *= multiplica una variable por un número.

myVar = myVar *5;

multiplicará myVar por 5. Esto puede reescribirse como:

myVar*=5;

Convierte las asignaciones para a, b y c para usar el operador *=.

El código con las solución se encuentra aquí:Download

Compound Assignment With Augmented Division

El operador /= divide una variable por otro número.

``myVar = myVar / 5;

Dividirá myVar por 5. Esto puede reescribirse como:

myVar /= 5;

Convierta las asignaciones para a, b y c para usar el operador /=.

El código con la solución se encuentra aquí:Download

Declare String Variables

Anteriormente hemos usado el código:

var myName = "your name";

"your name" se llama string literal. Es una cadena porque es una serie de cero o más caracteres encerrados entre comillas simples o dobles.

Cree dos nuevas variables de cadena: myFirstName y myLastName y asígneles los valores de su nombre y apellido, respectivamente.

El código con la solución se encuentra aquí:Download

Escaping Literal Quotes in Strings

Cuando define un string, debe comenzar y terminar con una comilla simple o doble. ¿qué sucede cuando necesita una comilla de forma literal 'o " dentro de su cadena?

En JavaScript, se puede hacerte esto utilizando un barra invertida \ delante de las comillas.

var sampleStr = "Alan said, \"Peter is learning JavaScript\".";

Esto le indica a JavaScript que la siguiente cita no es el final de la cadena, sino que debería aparecer dentro de la cadena. Entonces, si imprimiera esto en la consola, obtendría:

Alan said, "Peter is learning JavaScript".

Use las barras invertidas para asignar una cadena a la variable myStr de modo que si la imprimiera en la consola, vería: I am a "double quoted" string inside "double quotes".

El código con la solución se encuentra aquí:Download

Quoting Strings with Single Quotes

Los valores de String en JavaScript pueden escribirse con comillas simples o dobles, siempre que comience y termine con el mismo tipo de comillas. A diferencia de otros lenguajes de programación, las comillas simples y dobles funcionan igual en JavaScript.

doubleQuoteStr = "This is a string"; 
singleQuoteStr = 'This is also a string';

La razón por la que es posible que desee utilizar un tipo de cita sobre el otro es si desea utilizar ambos en una cadena. Esto puede suceder si desea guardar una conversación en una cadena y tener la conversación entre comillas. Otro uso para esto sería guardar y una etiqueta <a> con varios atributos entre comillas, todo dentro de una cadena.

conversation = 'Finn exclaims to Jake, "Algebraic!"';

Sin embargo, esto se convierte en un problema si necesita usar las comillas más externas dentro de él. Recuerde, una cadena tiene el mismo tipo de comillas al principio y al final. Pero si tiene esa misma cita en algún lugar en el medio, la cadena se detendrá antes y arrojará un error.

goodStr = 'Jake asks Finn, "Hey, let\'s go on an adventure?"'; 
badStr = 'Finn responds, "Let's go!"'; // Throws an error

En goodStr anterior, puede utilizar ambas comillas de forma segura utilizando la barra invertida \ como carácter de escape. Nota: La barra invertida \ no debe confundirse con la barra diagonal /. No hacen lo mismo.

Cambie la cadena proporcionada a una cadena con comillas simples al principio y al final y sin caracteres de escape.

En este momento, la etiqueta <a> en la cadena usa comillas dobles en todas partes. Deberá cambiar las comillas externas a comillas simples para poder eliminar los caracteres de escape.

El código con la solución se encuentra aquí:Download

Escape Sequences in Strings

Las citas no son los únicos caracteres que se pueden escapar dentro de una cadena. Hay dos razones para usar caracteres de escape:

  1. Para permitir usar caracteres, es posible que no puede escribir, como un retorno de carro.

  2. Para permitir representar varias comillas en un cadena sin que JavaScript malinterprete lo que quiere decir.

Aprendimos esto en el desafío anterior.

Code Output
\' single quote
\" double quote
\\ backslash
\n newline
\r carriage return
\t tab
\b word boundary
\f form feed

Nota: Tenga en cuenta que la barra invertida en sí misma debe escaparse para que se muestre como una barra invertida.

Asigne las siguientes tres líneas de texto en la variable única myStr usando secuencias de escape.

FirstLine
    \SecondLine
ThirdLine

Deberá usar secuencias de escape para insertar caracteres especiales correctamente. También deberá seguir el espacio como se ve arriba, sin espacios entre las secuencias de escape o palabras.

Aquí está el texto con las secuencias de escape escritas.

" FirstLinenewline tab backslashSecondLinenewlineThirdLine"

El código con la solución se encuentra aquí:Download

Concatenating Strings with Plus Operator

En JavaScript, cuando el operador + se usa con un valor de cadena, se llama operador de concatenación. Puede construir una nueva cadena a partir de otras cadenas concatenándolas juntas.

Ejemplo:

'My name is Alan,' + ' I concatenate.'

Nota: Cuidado con los espacios. La concatenación no agrega espacios entre cadenas concatenadas, por lo que deberá agregarlas usted mismo.

Construya myStr a partir de las cadenas "This is the start. " y "This is the end." usando el operador +.

El código con la solución se encuentra aquí:Download

Concatenating Strings with the Plus Equals Operator

También podemos usar el operador += para concatenar una cadena al final de una variable de cadena existente. Esto puede ser muy útil para romper una cadena larga en varias líneas.

Nota: Cuidado con los espacios. La concatenación no agregara espacios entre cadenas concatenadas, por lo que deberá agregarlas usted mismo.

Construya myStr sobre varias líneas concatenadas estas dos cadenas: "This is the first sentence. " y "This is the second sentence." usando el operador +=. Use el operador +=`` de forma similar a como se muestra en el editor. Comience asignando la primera cadena a myStr, luego agregue la segunda cadena.

El código con la solución se encuentra aquí:Download

Constructing Strings with Variables

A veces necesitarás construir un string, estilo Mad Libs. Al usar el operador de concatenación (+), puede insertar una o más variables en una cadena que está construyendo.

Establezca myName en una cadena igual a su nombre y cree myStr con myName entre las cadenas My name is y `` and I am well!".

El código con la solución se encuentra aquí:Download

Appending Variables to Strings

Así como podemos construir una cadena sobre múltiples líneas a partir de literales de cadena, también podemos agregar variables a una cadena usando el operador más igual a (+=).

Ejemplo:

var anAdjective = "awesome!";
var ourStr = "freeCodeCamp is ";
ourStr += anAdjective;

Establezca someAdjective y añádalo a myStr usando el operador +=.

El código con la solución se encuentra aquí:Download.

Find the Length of a String

Puede encontrar la longitud de un valor de string escribiendo .length después de la variable de cadena o literal de cadena.

"Alan Peter".length; // 10

Por ejemplo, si creamos una varibale var firstName = "Charles", podríamos averiguar cual es la longitud de la cadena Charles utilizando la propiedad tal que : firstName.length.

Use la propiedad .length para contar la cantidad de caracteres en la variable lastName y asignarla a lastNameLength.

El código con la solución se encuentra aquí:Download

Use Bracket Notation to Find the First Character in a String

La notación de corchetes es una forma e obtener un carácter en un índice específico dentro de una cadena.

La mayoría de los lenguajes de programación modernos, como JavaScript, no comienzan a contar en 1 como lo hacen los humanos. Comienzan en 0. Esto se conoce como indexación basada en cero.

Por ejemplo, el carácter en el índice 0 en la palabra "Charles" es "C". Entonces, si var firstName="Charles", puede obtener el valor de la primera letra de la cadena utilizando firstName[0].

Use la notación de corchetes para encontrar el primer carácter en la variable lastName y asígnelo a firstLetterOfLastName.

El código con la solución se encuentra aquí:Download

Understand String Immutability

En JavaScript, los valores de string son inmutables, lo que significa que no pueden modificarse una vez creados.

Por ejemplo, el siguiente código:

var myStr = "Bob";
myStr[0] = "J";

No puede cambiar el valor de myStr a "Job", porque el contenido de myStr no puede modificarse. Tenga en cuenta que esto no significa que myStr no se puede cambiar, solo que los caracteres individuales de un literal de cadena no se pueden cambiar. La única forma de cambiar myStr sería asignarlo con una nueva cadena, como esta:

var myStr = "Bob";
myStr = "Job";

Corrija la asignación anterior a myStr para que contenga el valor de cadena de Hello World utilizando el enfoque que se muestra en el ejemplo anterior.

El código con la solución se encuentra aquí:Download

Use Bracket Notation to Find the Nth Character in a String

También puede usar la notación de corchetes para obtener el carácter en otras posiciones dentro de una cadena.

Recuerde que las computadoras comienzan a contar en 0, por lo que el primer carácter es en realidad el carácter cero.

Intentemos establecer thirdLetterOfLastName para que sea igual a la tercera letra de la variable lastName usando la notación de corchetes.

El código con la solución se encuentra aquí:Download

Use Bracket Notation to Find the Last Character in a String

Para obtener la última letra de una cadena, puede restar uno de la longitud de la cadena.

Por ejemplo, si var firstName ="Charles"; puede obtenerr el valor de la última letra de la cadena utilizando firstName [firstName.length - 1].

Use la notación de corchetes para encontrar el último carácter en la variable lastName.

El código con la solución se encuentra aquí:Download

Use Bracket Notation to Find the Nth-to-Last Character in a String

Puede usar el mismo principio que acabamos de utilizar para recuperar el último carácter de una cadena para recuperar el enésimo carácter.

Por ejemplo, puede obtener el valor de la penúltima letra de la cadena var firstName = "Charles" cadena utilizando firstName[firstName.length - 3]

Use la notación de corchetes para encontrar el penúltimo carácter en la cadena de lastName.

El código con la solución se encuentra aquí:Download

Word Blanks

Ahora usaremos nuestro conocimiento de cadenas para construir un juego de palabras de estilo "Mad Libs" que llamamos "Word Blanks". Creará una oración de estilo "Fiil in the Blanks".

En un juego de "Mad Libs", se le proporcionan oraciones con algunas palabras que faltan, como sustantivos, verbos, adjetivos y adverbios. Luego, completa las piezas que faltan con palabras que elijas de manera que la oración completa tenga sentido.

Considere esta oración -" It was really ____, and we ____ ourselves ____" Esta oración tiene tres piezas faltantes: un adjetivo, un verbo y un adverbio, y podemos agregar palabras de nuestra elección para completarlo. Luego podemos asignar la oración completa a una variable de la siguiente manera:

var sentence = "It was really " + "hot" + ", and we " + "laughed" + " ourselves " + "silly" + ".";

En este desafío, le proporcionamos un sustantivo, un verbo, un adjetivo y un adverbio. Debe formar una oración completa con las palabras que elija, junto con las palabras que proporcionamos.

Necesitará usar el operador de concatenación de cadenas + para construir una cadena, usando las variables proporcionadas: myNoun, myAdjetive, myVerb y myAdverb. Luego asignará la cadena formada a la variable wordBlanks. No debe cambiar las palabras asignadas a las variables.

También tendrá que tener en cuenta los espacios en su cadena, de modo que la oración final tenga espacios entre todas las palabras. El resultado debe ser una oración completa.

El código con la solución se encuentra aquí:Download

Store Multiple Values in one Variable using JavaScript Arrays

Con las variables de matriz de JavaScript, podemos almacenar varios datos en un solo lugar.

Comienza una declaración de matriz con un corchete de apertura, termina con un corchete de cierre y coloca una coma entre cada entrada, de esta manera:

var sandwich = ["peanut butter", "jelly", "bread"]

Modifique la nueva matriz myArray para que contenga tanto una cadena como un número (en ese orden).

El código con la solución se encuentra aquí:Download

Nest one Array within Another Array

También puede anidar matrices dentro de otras matrices, como esta: ["Bulls", 23], ["White Sox", 45](/Josej2r/JavaScript_Algorithms_and_Data_Structures_Certification/wiki/"Bulls",-23],-["White-Sox",-45) . Esto también se llama una matriz multidimensional.

Cree una matriz anidada llamada myArray.

El código con la solución se encuentra aquí:Download

Access Array Data with Indexes

Podemos acceder a los datos dentro de las matrices usando índices.

Los índices de matriz se escriben en la misma notación de corchetes que usan las cadenas, excepto que en lugar de especificar un carácter, están especificando una entrada en la matriz. Al igual que las cadenas, las matrices usan indexación basada en cero, por lo que el primer elemento de una matriz tiene como índice 0.

Ejemplo:

var array = [50,60,70];
array[0]; // equals 50
var data = array[1];  // equals 60

Nota: No debería haber espacio entre el nombre de la matriz y los corchetes, como array [0]. Aunque JavaScript puede procesar esto correctamente, esto puede confundir a otros programadores que leen su código.

Cree una variable llamada myData y configúrela para que sea igual al primer valor de myArray usando la notación de corchetes.

El código con la solución se encuentra aquí:Download

Modify Array Data With Indexes

A diferencia de las cadenas, las entradas de las matrices son mutables y se pueden cambiar libremente.

Ejemplo:

var ourArray = [50,40,30];
ourArray[0] = 15; // equals [15,40,30]

Nota

No debería haber espacios entre el nombre de la matriz y los corchetes, como array [0]. Aunque JavaScript puede procesar esto correctamente, esto puede confundir a otros programadores que leen su código

Modifique los datos almacenados en el índice 0 de myArray a un valor de 45.

El código con la solución se encuentra aquí:Download.

Access Multi-Dimensional Arrays With Indexes

Una forma de pensar en una matriz multidimensional es como una matriz de matrices Cuando usa paréntesis para acceder a su matriz, el primer conjunto de paréntesis se refiere a las entradas de la matriz más externa (el primer nivel), y cada par adicional de paréntesis se refiere al siguiente nivel de entradas dentro.

Ejemplo.

var arr = [
  [1,2,3],
  [4,5,6],
  [7,8,9],
  [[10,11,12], 13, 14]
];
arr[3]; // equals [[10,11,12], 13, 14]
arr[3][0]; // equals [10,11,12]
arr[3][0][1]; // equals 11

Nota. No debería haber espacios entre el nombre de la matriz y los corchetes, como la array [0][0] e incluso esta array [0][0] no esta permitida. Aunque JavaScript puede procesar esto correctamente, esto puede confundir a otos programadores que leen su código.

Usando la notación de paréntesis, seleccione un elemento de myArray de modo que myData sea igual a 8.

El código con la solución se encuentra aquí:Download

Manipulate Arrays With push()

Una manera fácil de agregar datos al final de una matriz es a través de la función push(). ``.push() toma uno o más parámetros y los "empuja" al final de la matriz.

var arr = [1,2,3];
arr.push(4);
// arr is now [1,2,3,4]

Empuje ["dog", 3] al final de la variable myArray.

El código con la solución se encuentra aquí:Download

Manipulate Arrays With pop()Passed

Otra forma de cambiar los datos en una matriz es con la función .pop().

.pop() se puede usar para "extraer" un valor del final de una matriz. Podemos almacenar este valor "emergente" asignándolo a una variable. En otras palabras .pop() elimina el último elemento de una matriz y devuelve ese elemento.

Cualquier tipo de entrada se puede extraer de una matriz, number, strings incluso arrays.

var threeArr = [1, 4, 6];
var oneDown = threeArr.pop();
console.log(oneDown); // Returns 6
console.log(threeArr); // Returns [1, 4]

Use la función .pop() para eliminar el último elemento de myArray, asignando el valor "emergente" a removeFromMyArray.

El código con la solución se encuentra aquí:Download

Manipulate Arrays With shift()

pop() siempre elimina el último elemento de una matriz. ¿Qué pasa si quieres eliminar el primero?. Ahí es donde entra en juego .shift(). Funciona igual que .pop(), excepto que elimina el primer elemento en lugar del último.

Use la función .shift() para eliminar el primer elemento de myArray, asignando el valor "desplazado" a removeFromMyArray.

El código con la solución se encuentra aquí:Download

Manipulate Arrays With unshift()

No solo puede desplazar elementos fuera del comienzo de una matriz, sino que también puede desplazar elemento al comienzo de una matriz, es decir agregar elementos delante de la matriz.

.unshift funciona exactamente como .push(), pero en lugar de agregar el elemento al final de la matriz, .unshift() agrega el elemento al comienzo de la matriz.

Agregue ["Paul",35] al comienzo de la variable myArray usando unshift().

El código con la solución se encuentra aquí:Download

Shopping List

Cree una lista de compras en la variable, myList. La lista debe ser una matriz multidimensional que contenga varias sub-matrices.

El primer elemento en cada subconjunto debe contener una cadena con el nombre del elemento. El segundo elemento debe ser un número que represente la cantidad, es decir:

["Chocolate Bar", 15]

Debe haber al menos 5 sub-matrices en la lista.

El código con la solución se encuentra aquí:Download

Write Reusable JavaScript with Functions

En JavaScript, podemos dividir nuestro código en partes reutilizables llamas funciones. Aquí hay un ejemplo de una función:

function functionName() {
  console.log("Hello World");
}

Puede llamar o invocar esta función utilizando su nombre seguido de paréntesis, como este functionName(). Cada bex que se llama a la función, imprimirá el mensaje "Hello World" en la consola de desarrollo. Todo el código entre llaves se ejecutará cada vez que se llame a la función.

  1. Cree una función llamada reusableFunction que imprima "Hi World" en la consola de desarrollo.
  2. Llame a la función.

El código con la solución se encuentra aquí:Download

Passing Values to Functions with Arguments

Los parámetros son variables que actúan como marcadores de posición para los valores que se deben ingresar a una función cuando se llama. Cuando se define una función, generalmente se define junto con uno o más parámetros. Los valores reales que se ingresan o pasan en un función se conocen como argumentos.

Aquí hay una función con dos parámetros, param1 y param2:

function testFun(param1, param2) {
  console.log(param1, param2);
}

Entonces podemos llamar a testFun, testFun("Hello", "World"). Hemos pasado dos argumentos. Dentro de la función param1 será igual a "Hello" y param2 será igual a "World". Tenga en cuenta que podría llamar a testFun nuevamente con diferentes argumentos y los parámetros tomarían el valor de los nuevos argumentos.

  1. Cree una función llamada functionWithArgs que acepte dos argumentos y envíe su suma a la consola de desarrollo.
  2. Llame a la función con dos números como argumentos.

El código con la solución se encuentra aquí:Download

Global Scope and Functions

En JavaScript, el alcance se refiere a la visibilidad de las variables. Las variables que se definen fuera de un bloque de funciones tienen alcance global. Esto significa que se pueden ver en todas partes en su 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 deseadas en otra parte de su código o al ejecutar una función nuevamente. Siempre debe declarar sus variables con var.

Usando var, declare una variable global llamada myGlobal fuera de cualquier función. Inicialízalo con un valor de 10. Dentro de la función fun1, asigne 5 a oopsGlobal sin usar la palabra clave var.

El código con la solución se encuentra aquí:Download

Local Scope and Functions

Las variables que se declaran dentro de una función, así como los parámetros de la función tienen alcance local. Eso significa que solo son visibles dentro de esa función.

Aquí hay una función myTest con una variable local llamada loc.

function myTest() {
  var loc = "foo";
  console.log(loc);
}
myTest(); // logs "foo"
console.log(loc); // loc is not defined

loc no esta definida fuera de la función.

Declare una variable local myVar dentro de myLocalScope. Ejecute las pruebas y luego siga las instrucciones comentadas en el editor.

El código con la solución se encuentra aquí:Download

Global vs. Local Scope in Functions

Es posible tener variables locales y globales con el mismo nombre. Cuando hace esto, la variable local tiene prioridad sobre la variable global.

En este ejemplo:

var someVar = "Hat";
function myFun() {
  var someVar = "Head";
  return someVar;
}

La función myFun devolverá "Head" porque la versión local de la variable está presente.

Agregue una variable local a la función myOutfit para anular el valor de outsideWear con "sweater".

El código con la solución se encuentra aquí:Download

Return a Value from a Function with Return

Podemos pasar valores a una función con argumentos. Puede usar una declaración de devolución para devolver un valor de una función.

Ejemplo:

function plusThree(num) {
  return num + 3;
}
var answer = plusThree(5); // 8

plusThree toma un argumento para num y devuelve un valor igual a num+3.

Cree una función timesFive que acepte un argumento, lo multiplique por 5 y devuelva el nuevo valor. Vea la última línea en el editor para ver un ejemplo de cómo puede probar su función timesFive.

El código con la solución se encuentra aquí:Download

Understanding Undefined Value returned from a Function

Una función puede incluir la declaración de devolución, pero no es necesario. En el caso de que la función no tenga una declaración de devolución, cuando la llama, la función procesa el código interno pero el valor devuelto no está definido.

Ejemplo:

var sum = 0;
function addSum(num) {
  sum = sum + num;
}
addSum(3); // sum will be modified but returned value is undefined

addSum es una función sin una declaración de devolución. La función cambiará la variable de suma global pero el valor devuelto de la función no esta definido.

Cree una función addFive sin ningún argumento. Esta función agrega 5 a la variable suma, pero su valor devuelto no está definido.

El código con la solución se encuentra aquí:Download

Assignment with a Returned Value

Si recuerda de nuestra discusión sobre Storing Values with the Assignment Operator, todo a la derecha del signo igual se resuelve antes de asignar el valor. Esto significa que podemos tomar el valor de retorno de un función y asignarlo a una variable.

Supongamos que hemos predefinido una función suma, que suma dos números, luego:

ourSum = sum(5, 12);

llamará a la función sum, que devuelve un valor de 17 y lo asigna a nuestra variable ourSum.

Llama a la función processArg con un argumento de 7 y asigne su valor de retorno a la variable, proccesed.

El código con la solución se encuentra aquí:Download

Stand in Line

En informática, una cola es una estructura de datos donde los elementos se mantienen en orden. Se pueden agregar nuevos elementos en la parte posterior de la col y los elementos antiguos se eliminan del frente de la cola.

Escriba una función llamada nextLine que tome una matriz, llamada arr y un número como argumento. Agregue el número al final de la matriz, luego elimine el primer elemento de la matriz.

La función nextInLine debería devolver el elemento que se eliminó.

El código con la solución se encuentra aquí:Download

Understanding Boolean Values

Otro tipo de datos es el booleano. Los booleanos solo pueden ser uno de dos valores, true o false. Básicamente son pequeños interruptores de encendido y apagado, donde verdadero está encendido y falso es apagado. Estos dos estados son mutuamente excluyentes.

Nota. Los valores boolean nunca se escriben entre comillas. Las cadenas de "true" y "false" no son boolean y no tienen un significado especial en JavaScript.

Modifique la función welcomeToBooleans para que devuelva verdadero en lugar de falso cuando se hace click en el botón ejecutar.

El código con la solución se encuentra aquí:Download

Use Conditional Logic with If Statements

Las declaraciones if se utilizan 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 entre paréntesis. Estas condiciones se conocen como condicionales booleanas y solo pueden ser verdaderas o falsas.

Cuando la condición se evalúa como verdadera, el programa ejecuta la declaración dentro de las llaves. Cuando la condición booleana se evalúa como falsa, la instrucción dentro de las llaves no se ejecutará.

Pseudocódigo.

if (condition is true) {
  statement is executed
}

Ejemplo.

function test (myCondition) {
  if (myCondition) {
     return "It was true";
  }
  return "It was false";
}
test(true);  // returns "It was true"
test(false); // returns "It was false"

Cuando se llama al función test, con el valor de true, la instrucción if evalúa myCondition para ver si es verdadero o no. Como es verdadero, la función devuelve It was true. Cuando llamamos a la función test con valor de false, myCondition no es verdadero y la instrucción entre llaves no se ejecuta y la función devuelve It was false.

Cree una instrucción if dentro de la función para devolver "Yes, that was true" si el parámetro wasThatTrue es verdadero y devuelve "No, that was false" de lo contrario.

El código con la solución se encuentra aquí:Download

Comparison with the Equality Operator

Hay muchos operadores de comparación en JavaScript. Todos estos operadores devuelven un valor booleano true o false.

El operador más básico es el operador de igualdad ==. El operador de igualdad compara dos valores y devuelve verdadero si son equivalentes o falso si no lo son. Tenga en cuenta que la igualdad es diferente de la asignación =, que asigna el valor a la derecha del operador a una variable a la izquierda.

function equalityTest(myVal) {
  if (myVal == 10) {
     return "Equal";
  }
  return "Not Equal";
}

Si myVal es igual a 10, el operado de igualdad devuelve verdadero, por lo que se ejecutará el código entre llaves, y la función devolverá "Equal". De lo contrario, la función devolverá "Not Equal". Para que JavaScript compare dos tipos de datos diferentes (por ejemplo, números y cadenas), debe convertir un tipo a otro. Esto se conoce como "Type Coercion". Sin embargo, una vez que lo hace, puede comparar los términos de la siguiente manera.

1   ==  1   // true
1   ==  2   // false
1   == '1'  // true
"3" ==  3   // true

Agregue el operador de igualdad a la línea indicada para que la función devuelve "Equal" cuando val sea equivalente a 12.

El código con la función se encuentra aquí:Download

Comparison with the Strict Equality Operator

La igualdad estricta (===) es la contraparte del operador de igualdad ==. Sin embargo, a diferencia del operador de igualdad, que intenta convertir ambos valores en comparación con un tipo común, el operador de igualdad estricta no realiza una conversión de tipo.

Si los valores que se comparan tienen diferentes tipos, se consideran desiguales y el operador de igualdad estricta devolverá falso.

Ejemplo:

3 ===  3   // true
3 === '3'  // false

En el segundo ejemplo, · 3 es un tipo de número y '3' es un tipo de cadena.

Use el operador de igualdad estricta en la instrucción if para que la función devuelva "Equal" cuando val es estrictamente igual a 7.

El código con la solución se encuentra aquí:Download

Practice comparing different values

En los últimos dos desafíos aprendimos sobre el operador de igualdad (==) y el operador de igualdad estricta (===). Hagamos una revisión rápida y practiquemos el uso de estos operadores un poco más.

Si los valores que se comparan no son del mismo tipo, el operador de igualdad realizará una conversión de tipo y luego evaluará los valores. Sin embargo, el operador de igualdad estricta comparará tanto el tipo de datos como el valor tal cual, sin convertir un tipo a otro.

Ejemplo.

3 == '3'  // returns true because JavaScript performs type conversion from string to number
3 === '3' // returns false because the types are different and type conversion is not performed

Nota. En JavaScript, puede determinar el tipo de una variable o un valor con el operador typeof, de la siguiente manera.

typeof 3   // returns 'number'
typeof '3' // returns 'string'

La función compareEquality en el editor compara dos valores usando el operador de igualdad. Modifique la función para que devuelva "Equal" solo cuando los valores sean estrictamente iguales.

El código con la solución se encuentra aquí:Download

Comparison with the Inequality Operator

El operador de desigualdad (!=) es lo opuesto al operador de igualdad. Significa, no es igual y devuelve falso donde la igual devolvería verdadero y viceversa. Al igual que el operador de igualdad, el operador de desigualdad convertirá tipos de datos de valores al comparar.

Ejemplos:

1 !=  2     // true
1 != "1"    // false
1 != '1'    // false
1 != true   // false
0 != false  // false

Agregue el operador de desigualdad != en la instrucción if para que la función devuelva "Not Equal" cuando val no es equivalente a 99.

El código con la solución se encuentra aquí:Download

Comparison with the Strict Inequality Operator

El operador de desigualdad estricta !== es el opuesto lógico del operador de igualdad estricta. Significa , estrictamente no igual, y devuelve falso donde la igualdad estricta devolvería verdadero y viceversa. La desigualdad estricta no convertirá los tipos de datos.

3 !==  3   // false
3 !== '3'  // true
4 !==  3   // true

Agregue el operador de desigualdad estricta a la instrucción if para que la función devuelva "Not Equal" cuando val no sea estrictamente igual a 17.

El código con la solución se encuentra aquí:Download

Comparison with the Greater Than Operator

El operador mayor que > compara los valores de dos números. Si el número a la izquierda es mayor que el número a la derecha, devuelve verdadero. De lo contrario, devuelve falso.

Al igual que el operador de igualdad, mayor que convertirá tipos de datos de valores al comparar.

Ejemplos.

5   >  3   // true
7   > '3'  // true
2   >  3   // false
'1' >  9   // false

Agregue el operador mayor que a las líneas indicadas para que las declaraciones de retorno tengan sentido.

El código con la solución se encuentra aquí:Download

Comparison with the Greater Than Or Equal To Operator

El operador mayor o igual que >= compara los valores de dos números. Si el número a la izquierda es mayor o igual que el número a la derecha, devuelve verdadero. De lo contrario, devuelve falso.

Al igual que el operador igualdad, mayor o igual que el operador convertirá los tipos de datos al comparar.

Ejemplos:

6   >=  6   // true
7   >= '3'  // true
2   >=  3   // false
'7' >=  9   // false

Agregue el operador mayor o igual que a las líneas indicadas para que las declaraciones de retorno tengan sentido.

El código con la solución se encuentra aquí:Download

Comparison with the Less Than Operator

El operador menor que < compara los valores de dos números. Si el número a la izquierda es menor que el número a la derecha, devuelve verdadero. De lo contrario, devuelve falso. Al igual que el operador de igualdad, menos que el operador convierte los tipos de datos al comparar.

Ejemplos:

2   < 5  // true
'3' < 7  // true
5   < 5  // false
3   < 2  // false
'8' < 4  // false

Agregue el operador menor que a las líneas indicadas para que las declaraciones de retorno tengan sentido.

El código con la solución se encuentra aquí: Download

Comparison with the Less Than Or Equal To Operator

El operador menor o igual que <= compara valores de dos números. Si el número a la izquierda es menor o igual que el número a la derecha, devuelve verdadero. Si el número de la izquierda es mayor que el número de la derecha, devuelve falso. Al igual que el operador de igualdad, menor o igual que convierte los tipos de datos.

Ejemplo:

4   <= 5  // true
'7' <= 7  // true
5   <= 5  // true
3   <= 2  // false
'8' <= 4  // false

Agregue el operador menor o igual a las líneas indicadas para que las declaraciones de retorno tengan sentido.

El código con la solución se encuentra aquí:Download

Comparisons with the Logical And Operator

A veces necesitará probar más de una cosa a la vez. El operador lógico && devuelve verdadero si y solo si los operandos a la izquierda y derecha son verdaderos.

Se podría logar el mismo efecto anidando una declaración if dentro de otro if:

if (num > 5) {
  if (num < 10) {
    return "Yes";
  }
}
return "No";

solo devolverá "Yes" si num es mayor que 5 y menor que 10. La misma lógica se puede escribir como:

if (num > 5 && num < 10) {
  return "Yes";
}
return "No";

Reemplace las dos declaraciones if con una declaración, utilizando el operador &&, que devolverá "True" si el valor es menor o igual a 50 y mayor o igual a 25. De lo contrario, devolverá "No".

El código con la solución se encuentra aquí:Download

Comparisons with the Logical Or Operator

El operador lógico or || devuelve verdadero si cualquiera de los operandos es verdadero. De lo contrario, devuelve falso.

El operador lógico está compuesto por dos símbolos ||.

El siguiente patrón debería parecer familiar desde puntos de referencia anteriores:

if (num > 10) {
  return "No";
}
if (num < 5) {
  return "No";
}
return "Yes";

devolverá "Yes" solo si num está entre 5 y 10 (5 y 10 incluidos). La misma lógica se puede escribir como:

if (num > 10 || num < 5) {
  return "No";
}
return "Yes";

Combine las dos declaraciones if en una declaración que devuelve "Outside" si val no está entre 10 y 20 inclusive. De lo contrario, devolverá "Inside".

El código con la solución se encuentra aquí:Download

Introducing Else Statements

Cuando una condición para una instrucción if es verdadera, se ejecuta el bloque de código que le sigue. ¿Qué pasa cuando esa condición es falsa? Normalmente else, se puede ejecutar un bloque de código alternativo.

if (num > 10) {
  return "Bigger than 10";
} else {
  return "10 or Less";
}

Combine las declaraciones if en una sola declaración if/else.

El código con la solución se encuentra aquí:Download

Introducing Else If Statements

Si tienes varias condiciones que deben abordarse, puede encadenar declaraciones if junto con declaraciones else if.

if (num > 15) {
  return "Bigger than 15";
} else if (num < 5) {
  return "Smaller than 5";
} else {
  return "Between 5 and 15";
}

Convierta la lógica para usar declaraciones else if.

El código con la solución se encuentra aquí:Download

Logical Order in If Else Statements

El orden es importante en las declaraciones if, else if.

La función se ejecuta de arriba a abajo, por lo que tendrá que tener cuidado con la declaración que viene primero.

Tome estas dos funciones como ejemplo.

Aquí está el primero:

function foo(x) {
  if (x < 1) {
    return "Less than one";
  } else if (x < 2) {
    return "Less than two";
  } else {
    return "Greater than or equal to two";
  }
}

Y el segundo simplemente cambia el orden de las declaraciones:

function bar(x) {
  if (x < 2) {
    return "Less than two";
  } else if (x < 1) {
    return "Less than one";
  } else {
    return "Greater than or equal to two";
  }
}

Si bien estas dos funciones se ven casi idénticas si pasamos un número a ambas, obtendremos salidas diferentes.

foo(0) // "Less than one"
bar(0) // "Less than two"

Cambie el orden de la lógica en la función para que devuelva las declaraciones correctas en todos los casos.

El código con la solución se encuentra aquí:Download

Chaining If Else Statements

Las declaraciones if/else se pueden encadenar juntas para una lógica compleja. Aquí hay un pseudocódigo de múltiples if /else if encadenadas:

if (condition1) {
  statement1
} else if (condition2) {
  statement2
} else if (condition3) {
  statement3
. . .
} else {
  statementN
}

Escriba declaraciones if / else if encadenadas para cumplir las siguientes condiciones:

num < 5 - return "Tiny"

num < 10 - return "Small"

num < 15 - return "Medium"

num < 20 - return "Large"

num >= 20 - return "Huge"

El código con la solución se encuentra aquí:Download

Golf Code

En el juego golf, cada hoyo tiene un par, lo que significa el número promedio de golpes que se espera que haga un golfista para hundir la pelota en un hoyo para completar el juego. Dependiendo de qué tan arriba o abajo estén los strokes hay un apodo diferente.

Su función se pasará el par y strokes como argumentos. Devuelve la cadena correcta de acurdo con esta tabla que enumeran los trozos en orden de prioridad. De arriba (más alto) a abajo (más bajo):

Strokes Return
1 "Hole-in-one!"
<= par - 2 "Eagle"
par - 1 "Birdie"
par "Par"
par + 1 "Bogey"
par + 2 "Double Bogey"
>= par + 3 "Go Home!"

par y strokes siempre serán números positivos. Hemos agregado una variedad de todos los nombres para su conveniencia.

El código con la solución se encuentra aquí:Download

Selecting from Many Options with Switch Statements

Si tiene muchas opciones para elegir, use una declaración de cambio. Una instrucción switch prueba un valor y puede tener muchas instrucciones de caso que definen varios valores posibles. Las declaraciones se ejecutan desde el primer case coincidente hasta que se encuentra el break.

Aquí hay un ejemplo:

switch(lowercaseLetter) {
  case "a":
    console.log("A");
    break;
  case "b":
    console.log("B");
    break;
}

Los valores de los casos se pruebas con igualdad estricta (===). El break le dice a JavaScript que deje de ejecutar declaraciones. Si se omite el salto, se ejecutará la siguiente instrucción.

Escriba una declaración de cambio que pruebe val y establezca la respuesta para las siguientes condiciones:

1 - "alpha"

2 - "beta"

3 - "gamma"

4 - "delta"

El código con la solución se encuentra aquí: Download

Adding a Default Option in Switch Statements

En una declaración switch es posible que no pueda especificar todos los valores posibles como declaraciones. En su lugar, puede agregar la declaración predeterminada que se ejecutará si no se encuentran declaraciones de casos coincidentes. Piense en ello como la última declaración else en un cadena if / else.

Una declaración default debería ser el último caso.

switch (num) {
  case value1:
    statement1;
    break;
  case value2:
    statement2;
    break;
...
  default:
    defaultStatement;
    break;
}

Escriba una declaración de cambio para establecer la respuesta para las siguientes condiciones:

"a" - "apple"

"b" - "bird"

"c" - "cat"

default - "stuff"

El código con la solución se encuentra aquí:Download

Multiple Identical Options in Switch Statements

Si la declaración break se omite del caso de una declaración de case, las siguientes declaraciones de case se ejecutan hasta que se encuentra un break. Si tiene varias entradas con la misma salida, puede representarlas en una declaración de case como esta:

switch(val) {
  case 1:
  case 2:
  case 3:
    result = "1, 2, or 3";
    break;
  case 4:
    result = "4 alone";
}

Los casos 1, 2 y 3 producen la misma salida.

Escriba una declaración de case para establecer la respuesta para los siguientes rangos:

1-3 - "Low"

4-6 - "Mid"

7-9 - "High"

Nota: Deberá tener una declaración de caso para cada número en el rango.

El código con la solución se encuentra aquí:Download

Replacing If Else Chains with Switch

Si tiene muchas opciones para elegir, una declaración switch puede ser más fácil de escribir que muchas declaraciones if /else if encadenadas. El siguiente :

if (val === 1) {
  answer = "a";
} else if (val === 2) {
  answer = "b";
} else {
  answer = "c";
}

Puede sustituirse por:

switch(val) {
  case 1:
    answer = "a";
    break;
  case 2:
    answer = "b";
    break;
  default:
    answer = "c";
}

Cambie las declaraciones if/else if encadenadas en una declaración switch.

El código con la solución se encuentra aquí:Download

Returning Boolean Values from Functions

Puede recordar la comparación con el operador de igualdad que todos los operadores de comparación devuelven un valor booleano verdadero o falso.

Algunas veces las personas usan una declaración if/else para hacer una comparación como esta:

function isEqual(a,b) {
  if (a === b) {
    return true;
  } else {
    return false;
  }
}

Pero hay una mejor manera de hacer esto. Como === devuelve verdadero o falso, podemos devolver el resultado de la comparación:

function isEqual(a,b) {
  return a === b;
}

Arregle la función isLess para eliminar las declaraciones if/else.

El código con la solución se encuentra aquí:Download

Return Early Pattern for Functions

Cuando se alcanza una declaración de return, la ejecución de la función actual se detiene y el control vuelve a la ubicación de la llamada.

Ejemplo:

function myFun() {
  console.log("Hello");
  return "World";
  console.log("byebye")
}
myFun();

Lo anterior emite "Hello" a la consola, devuelve "World" , pero "byebye" nunca se emite, porque la función sale en la declaración de return.

Modifique la función abTest para que si a o b sea menor que 0, la función saldrá inmediantamente con un valor undefined.

El código con la solución se encuentra aquí:Download

Counting Cards

En el juego de casino BlackJack, un jugador puede obtener una ventaja sobre la casa haciendo un seguimiento del número relativo de cartas altas y bajas que quedan en el mazo. Esto se llama conteo de cartas.

Tener más cartas altas restantes en el mazo favorece al jugador. A cada tarjeta se le asigna un valor de acuerdo con la tabla a continuación. Cuando el conteo es positivo, el jugador debe apostar alto. Cuando el conteo es cero o negativo, el jugador debe apostar bajo.

Count Change Cards
+1 2, 3, 4, 5, 6
0 7, 8, 9
-1 10, 'J', 'Q', 'K', 'A'

Escribirás una función de conteo de cartas. Recibirá un parámetro de tarjeta, que puede ser un número o una cadena, e incrementará o disminuirá la variable de conteo global de acuerdo con el valor de la tarjeta. La función devolverá una cadena con el conteo actual y la cadena Bet si el conteo es positivo, Hold si el conteo es cero o negativo. El conteo actual y la decisión del jugador (Bet or Hold) deben estar separados por un solo espacio.

Ejemplo de salida.

-3 Hold

5 Bet

Ayuda: No reinicie el count a 0 cuando el valor es 7,8 o 9.

No devuelva un array.

No incluya comillas simples o dobles en la salida.

El código con la solución se encuentra aquí:Download

Build JavaScript Objects

Es posible que haya escuchado el término object antes.

Los objetos son similares a las matrices, excepto que en lugar de usar índices para acceder y modificar sus, usted accede a los datos en los objetos a través de lo que se llaman propierties.

Los objetos son útiles para almacenar datos de forma estructurada y pueden representar objetos del mundo real, como un gato.

Aquí hay un ejemplo:

var cat = {
  "name": "Whiskers",
  "legs": 4,
  "tails": 1,
  "enemies": ["Water", "Dogs"]
};

En este ejemplo, todas las propiedades se almacenan como cadenas, name, legs, tails. Sin embargo, también se puede usar números como propiedades. Incluso puede omitir las comillas para las propiedades de cadena de una sola palabra, de la siguiente manera:

var anotherObject = {
  make: "Ford",
  5: "five",
  "model": "focus"
};

Sin embargo, si su objeto tiene propiedades que no son cadenas, JavaScript las escribirá automáticamente como cadenas.

Haga un objeto que represente un perro llamado myDog que contenga las propiedades, "name" (a string), "legs", "tails" and "friends"

Puede establecer estad propiedades de objeto a los valores que desee, siempre que name sea una cadena, patas , colas sean números y amigos sea un array.

El código con la solución se encuentra aquí:Download

Accessing Object Properties with Dot Notation

Hay dos maneras de acceder a las propiedades de un objeto: notación de punto (.) y notación de corchetes [], similar a una matriz.

La notación de puntos es la que se usa cuando conoce el nombre de la propiedad a la que intenta acceder con anticipación.

Aquí hay una muestra del uso de la notación de punto. Para leer la propiedad de un objeto:

var myObj = {
  prop1: "val1",
  prop2: "val2"
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2

Lea los valores de propiedad de testObj usando la notación de punto. Establezca la variable hatValue igual a la propiedad hat y establezca la variable shirtValue igual a la propiedad del objeto shirt.

El código con la solución se encuentra aquí: Download

Accessing Object Properties with Bracket Notation

La segunda forma de acceder a las propiedades de un objeto es la notación de corchetes []. Si la propiedad del objeto al que intenta acceder tiene un espacio en su nombre, deberá usar la notación de corchetes.

Sin embargo, aún puede usar la notación de corchetes en las propiedades de los objetos sin espacios.

Aquí hay una muestra del uso de la notación de corchetes para leer la propiedad de un objeto:

var myObj = {
  "Space Name": "Kirk",
  "More Space": "Spock",
  "NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"];    // USS Enterprise

Tenga en cuenta que los nombres de propiedad con espacios deben estar entre comillas, simples o dobles.

Lea los valores de las propiedades "an entree" y "the drink" de testObj usando la notación de corchetes y asígnelos a entreValue y drinkValue respectivamente.

El código con la solución se encuentra aquí:Download

Accessing Object Properties with Variables

Otro uso de la notación de corchetes en los objetos es acceder a una propiedad que se almacena como el valor de una variable. Esto puede ser muy útil para recorrer las propiedades de un objeto o al acceder a una tabla de búsqueda.

Aquí hay un ejemplo del uso de una variable para acceder a una propiedad:

var dogs = {
  Fido: "Mutt",  Hunter: "Doberman",  Snoopie: "Beagle"
};
var myDog = "Hunter";
var myBreed = dogs[myDog];
console.log(myBreed); // "Doberman"

Otra forma en que puede usar este concepto es cuando el nombre de la propiedad se recopila dinámicamente durante la ejecución del programa, de la siguiente manera:

var someObj = {
  propName: "John"
};
function propPrefix(str) {
  var s = "prop";
  return s + str;
}
var someProp = propPrefix("Name"); // someProp now holds the value 'propName'
console.log(someObj[someProp]); // "John"

Tenga en cuenta que no usamos comillas alrededor del nombre de la variable cuando lo usamos para acceder a la propiedad porque estamos usando el valor de la variable, no el nombre.

Use la variable playerNumber para buscar el player 16 en testObj usando la notación de corchetes. Luego asigne ese nombre a la variable del player.

El código con la solución se encuentra aquí:Download

// Setup
var testObj = {
  12: "Namath",
  16: "Montana",
  19: "Unitas"
};

// Only change code below this line;

var playerNumber = 16;       // Change this Line
var player = testObj[playerNumber];   // Change this Line

Updating Object Properties

Después de haber creado un objeto JavaScript, puede actualizar sus propiedades en cualquier momento al igual que actualizaría cualquier otra variable. Puede usar la notación de punto o corchete para actualizar.

Por ejemplo, echemos un vistazo a ourDog:

var ourDog = {
  "name": "Camper",
  "legs": 4,
  "tails": 1,
  "friends": ["everything!"]
};

Como es un perro paticularmente feliz, cambiemos su nombre a "Happy Camper".

Así es como actualizamos la propiedad del nombre de su objeto:

ourDog.name="Happy Camper"; o ourDog ["name] = "Happy Camper";

Ahora, cuando evaluamos ourDog.name, en lugar de obtener "Camper", obtendremos su nuevo nombre, "Happy Camper".

Actualice la propiedad del nombre de myDog. Cambiemos su nombre de "Coder" a "Happy Coder". Puede usar la notación de punto o corchete.

El código con la solución se encuentra aquí:Download

Add New Properties to a JavaScript Object

Puede agregar nuevas propiedades a los objetos JavaScript existentes de la misma manera que los modificaría.

Así es como agregaríamos una propiedad "barK" a ourDog:

ourDog.bark = "bow-wow"; o ourDog["bark]= "bow-wow";

Ahora cuando evaluamos ourDog.bark, obtendremos su ladrido, "bow-wow".

Agregue una propiedad "bark" a myDog y configúrelo como un sonido de perro, como "woof". Puede usar la notación de punto o corchete.

El código con la solución se encuentra aquí: Download

Delete Properties from a JavaScript Object

También podemos eliminar propiedades de objetos como este:

delete ourDog.bark;

Elimina la propiedad "tails" de myDog. Puede usar la notación de punto o corchete.

El código con la solución se encuentra aquí:Download

Using Objects for Lookups

Los objetos pueden considerarse como un almacenamiento de key/value , como un diccionario. Si tiene datos tabulares, puede usar un objeto para "buscar" valores en lugar de una declaración switch o una cadena if/else. Esto es más útil cuando sabe que sus datos de entrada están limitados a un cierto rango.

Aquí hay un ejemplo de una simple búsqueda inversa del alfabeto:

var alpha = {
  1:"Z",
  2:"Y",
  3:"X",
  4:"W",
  ...
  24:"C",
  25:"B",
  26:"A"
};
alpha[2]; // "Y"
alpha[24]; // "C"

var value = 2;
alpha[value]; // "Y"

Convierta la declaración de cambio en un objeto llamado lookup. Úselo para buscar val y asignar la cadena asociada a la variable de result.

// Setup
function phoneticLookup(val) {
  var result = "";

  // Only change code below this line
    var lookup = {
    "alpha": "Adams",

     "bravo":"Boston",

     "charlie": "Chicago",

     "delta": "Denver",

     "echo": "Easy",

     "foxtrot": "Frank",
  };
result = lookup[val];
  // Only change code above this line
  return result;
}

// Change this value to test
phoneticLookup("charlie");

El código con la solución se encuentra aquí:Download.

Testing Objects for Properties

A veces es útil verificar si la propiedad de un objeto dado existe o no. Podemos usar el método .hasOwnProperty(propname) de los objetos para determinar si ese objeto tiene el nombre de propiedad dado .hasOwnProperrty() devuelve verdadero o falso si se encuentra la propiedad o no.

Ejemmplo:

var myObj = {
  top: "hat",
  bottom: "pants"
};
myObj.hasOwnProperty("top");    // true
myObj.hasOwnProperty("middle"); // false

Modifique la función checkObj para probar myObj para checkProp. Si se encuentra la propiedad, devuelva el valor de esa propiedad. Si no, devuelve "Not Found".

El código con la solución se encuentra aquí:Download

Manipulating Complex Objects

A veces es posible que desee almacenar datos en una estructura de datos flexible. Un objeto JavaScript es una forma de manejar datos flexibles. Permiten combinaciones arbitrarias de string, numbers, booleans, arrays, functions y objects.

Aquí hay un ejemplo de una estructura de datos compleja:

var ourMusic = [
  {
    "artist": "Daft Punk",
    "title": "Homework",
    "release_year": 1997,
    "formats": [ 
      "CD", 
      "Cassette", 
      "LP"
    ],
    "gold": true
  }
];

Esta es una matriz que contiene un objeto dentro. El objeto tiene varias piezas de metadatos sobre un álbum. También tiene una matriz "formats" anidada. Si desea agregar más registros de álbumes, puede hacerlo agregando registros a la matriz de nivel superior. Los objetos contienen datos en una propiedad, que tiene un formato clave-valor. En el ejemplo anterior, "artist": "Daft Punk" es una propiedad que tiene una clave de "artist" y un valor de "Daft Punk". JavaScript Object Notation o JSON es un formato de intercambio de datos relacionado que se utiliza para almacenar datos.

{
  "artist": "Daft Punk",
  "title": "Homework",
  "release_year": 1997,
  "formats": [ 
    "CD",
    "Cassette",
    "LP"
  ],
  "gold": true
}

Nota: Deberá colocar una coma después de cada objeto en la matriz, a menos que sea el último objeto en la matriz.

Agregue un nuevo álbum a la matriz myMusic. Agregue cadenas de artist y title, numero de release_year y formats de cadenas.

El código con la solución se encuentra aquí:Download

Accessing Nested Objects

Se puede acceder a las subpropiedades de los objetos encadenando la notación de punto o paréntesis.

Aquí hay un objeto anidado:

var ourStorage = {
  "desk": {
    "drawer": "stapler"
  },
  "cabinet": {
    "top drawer": { 
      "folder1": "a file",
      "folder2": "secrets"
    },
    "bottom drawer": "soda"
  }
};
ourStorage.cabinet["top drawer"].folder2;  // "secrets"
ourStorage.desk.drawer; // "stapler"

Acceda al objeto myStorage y asigne el contenido de la propiedad glove box a la variable gloveBoxContents. Utilice la notación de puntos para todas las propiedades donde sea posible, de lo contrario utilice la notación de corchetes.

El código con la solución se encuentra aquí:Download

Accessing Nested Arrays

Como hemos visto en ejemplos anteriores, los objetos pueden contener tanto objetos anidados como matrices anidadas. De manera similar al acceso a objetos anidados, la notación de parche de matriz se puede encadenar para acceder a matrices anidadas.

Aquí un ejemplo de cómo acceder a una matriz anidada:

var ourPets = [
  {
    animalType: "cat",
    names: [
      "Meowzer",
      "Fluffy",
      "Kit-Cat"
    ]
  },
  {
    animalType: "dog",
    names: [
      "Spot",
      "Bowser",
      "Frankie"
    ]
  }
];
ourPets[0].names[1]; // "Fluffy"
ourPets[1].names[0]; // "Spot"

Recupere el segundo árbol de la variable myPlants utilizando la notación de punto de objeto y matriz.

El código con la solución se encuentra aquí:Download

Record Collection

Te dan un objeto JSON que representa una parte de tu colección de álbumes musicales y número de identificación único como clave. No todos los álbumes tienen información completa.

Escriba una función que toma la id de un álbum como 2548, un prop como artist o track y un value como Addicted to Love para modificar los datos en la colección.

Si el ´´prop´´ no es ´´tracks´´ y el value no esta vacío, actualice o establezca el value para la propiedad del álbum de grabación.

Su función siempre debe devolver el objeto de colección completo.

Existen varias reglas para manejar datos incompletos:

Si prop es track pero el álbum no tiene una propiedad tracks, cree una matriz vacía antes de agregar el nuevo valor a la propiedad correspondiente del álbum.

Si el accesorio es tracks y el value no está vacío, inserte el valor al final de la matriz de tracks existente del álbum.

Si el valor está vacio, elimine la propiedad de prop.

Consejo:

Use la notación de corchetes para acceder a las propiedades del objeto con variables.

Emplee el método push.

El código con la solución se encuentra aquí:Download

Iterate with JavaScript While Loops

Puede ejecutar el mismo código varias veces utilizando un bucle.

El primer tipo de ciclo que aprendemos se llama ciclo while porque se ejecuta mientras una condición específica es verdadera y se detiene una vez que esa condición ya no es verdadera.

var ourArray = [];
var i = 0;
while(i < 5) {
  ourArray.push(i);
  i++;
}

En el código anterior, el ciclo while se ejecutará cinco veces y agregará los números del 0 al 4 a nuestra matriz.

Intentemos que funcione un ciclo while empujando los valores a una matriz.

Agreguemos los números del 5 al 0 inclusive en orden descendente a myArray usando un ciclo while.

El código con la solución se encuentra aquí:Download

Iterate with JavaScript For Loops

Puede ejecutar el mismo código varias veces utilizando un bucle.

El tipo más común de los bucles de JavaScript se denomina bucle for porque se ejecuta por un número específico de veces.

Los bucles se declaran con tres expresiones opcionales separadas por un punto y coma.

for ([initialization]; [condition]; [final-expression])

La instrucción de inicialización se ejecuta una sola vez antes de que comience el ciclo. Normalmente se usa para definir y configurar su variable de bucle.

La declaración de condición se evalúa al comienzo de cada iteración del bucle y continuará mientras se evalúe como verdadera. Cuando la condición es falsa al comienzo de la iteración, el ciclo dejará de ejecutarse. Esto significa que si la condición comienza como falsa, su ciclo nunca se ejecutará.

La expresión final se ejecuta al final de cada iteración del ciclo, antes de la siguiente verificación de condición y generalmente se usa para aumentar o disminuir su contador de ciclo.

En el siguiente ejemplo, inicializamos con i=0 e iteramos mientras nuestra condición i<5 es verdadera. Incrementaremos i en 1 en cada iteración de bucle con i++ como nuestra expresión final.

var ourArray = [];
for (var i = 0; i < 5; i++) {
  ourArray.push(i);
}

ourArray ahora contiene [0,1,2,3,4].

Use un bucle for para trabajar para insertar los valores del 1 al 5 en myArray.

El código con la solución se encuentra aquí:Download

Iterate Odd Numbers With a For Loop

Para los bucles no tiene que iterar uno a la vez. Al cambiar nuestra expresión final, podemos contar por números pares.

Comenzaremos en i=0 y realizaremos un ciclo mientras i<10. Incrementando i en 2 cada ciclo con i+=2.

var ourArray = [];
for (var i = 0; i < 10; i += 2) {
  ourArray.push(i);
}

ahora ourArray contiene [0,2,4,6,8]. Cambiemos nuestra inicialización para que podamos contar por número impares.

Empuje los números impares del 1 al 9 a myArray usando un bucle for.

El código con la solución se encuentra aquí:Download

Count Backwards With a For Loop

Un bucle for también puede contar hacia atrás, siempre que podamos definir las condiciones correctas.

Para contar hacia atrás por dos, necesitaremos cambiar nuestras inicialización, condición y expresión final.

Comenzaremos en i=10, y realizaremos un ciclo mientras i>0. Disminuiremos i en 2 cada ciclo con i+=2:

var ourArray = [];
for (var i=10; i > 0; i-=2) {
  ourArray.push(i);
}

Ahora ourArray contiene [10,8,6,4,2]. Cambiemos nuestra inicialización y expresión final para que podamos contar hacia atrás de dos en dos para los números impares.

Empuje los números impares del 9 al 1 en myArray usando un bucle for.

El código con la solución se encuentra aquí:Download

Iterate Through an Array with a For Loop

Una tarea común en JavaScript es iterar a través del contenido de una matriz. Una forma de hacerlo es con un bucle for. Este código generará cada elemento de la matríz arr a la consola:

var arr = [10, 9, 8, 7, 6];
for (var i = 0; i < arr.length; i++) {
   console.log(arr[i]);
}

Recuerde que las matrices tienen una indexación basada en cero, lo que significa que el último índice de la matriz es length-1. Nuestra condición para este bucle es i < arr.length , que se detiene el bucle cuando i es igual a length. En este caso la última es i===4, es decir , cuando es igual a la longitud de arr y sale 6 en la consola.

Declare e inicialice una variable total a cero. Use un bucle for para agregar el valor de cada elemento de la matriz myArr al total.

El código con la solución se encuentra aquí:Download

Nesting For Loops

Si tiene una matriz multidimensional, puede usar la misma lógica que el punto de ruta anterior para recorrer tanto la matriz como cualquier matriz secundaria. Aquí hay un ejemplo:

var arr = [
  [1,2], [3,4], [5,6]
];
for (var i=0; i < arr.length; i++) {
  for (var j=0; j < arr[i].length; j++) {
    console.log(arr[i][j]);
  }
}

Esto genera cada subelemento en arr uno a la vez. Tenga en cuenta que para el bucle interno, estamos verificando la length de arr[i] ya que arr[i] es en sí mismo una matriz.

Modifique la función multiplyAll para que multiplique la variable del producto por cada número en las submatrices de arr.

El código con la solución se encuentra aquí:Download.

Iterate with JavaScript Do...While Loops

El siguiente tipo de bucle que aprenderá se llama bucle do ...while. Se llama un bucle do..while porque primero hará una pasada del código dentro del bucle sin importar qué, y luego continuará ejecutando el bucle mientras la condición especificada se evalúa como verdadera.

var ourArray = [];
var i = 0;
do {
  ourArray.push(i);
  i++;
} while (i < 5);

El ejemplo anterior se comportara de manera similar a otros tipos de bucles, y la matriz resultante se verá como [0, 1, 2, 3, 4]. Sin embargo, lo que hace el do...while diferente a otros bucles es cómo se comporta cuando la condición falla en la primera verificación. Veamos esto en acción: aquí hay un ciclo while regular que ejecutará el código en el siempre que i<5:

var ourArray = []; 
var i = 5;
while (i < 5) {
  ourArray.push(i);
  i++;
}

En este ejemplo, inicializamos el valor de ourArray en una matriz vacía y el valor de i a 5. Cuando ejecutamos el ciclo while, la condición se evalúa como falsa porque no es menor que 5, por lo que no ejecutamos el código dentro del ciclo. El resultado es que ourArray terminará sin valores agregados, y aún se verá como [] cuando todo el código en el ejemplo anterior haya terminado de ejecutarse.Ahora, eche un vistazo a un bucle do...while:

var ourArray = []; 
var i = 5;
do {
  ourArray.push(i);
  i++;
} while (i < 5);

En este caso, inicializamos el valor de i a 5, tal como hicimos con el ciclo while. Cuando llegamos a la siguiente línea, no hay condición para evaluar, así que vamos código dentro de las llaves y lo ejecutamos. Agregamos un solo elemento a la matriz y luego incrementaremos i antes de llegar a la verificación de condición. Cuando finalmente evaluamos la condición de i<5 en la última línea, vemos que ahora es 6, que falla la verificación condicional, por lo que salimos del ciclo y terminamos. Al final del ejemplo anterior, el valor de ourArray es [5]. Esencialmente, un bucle do...while asegura que el código dentro del bucle se ejecutará al menos una vez. Intentemos hacer un do...while para trabajar empujando valores a una matriz.

Cambie el ciclo while en el código a un ciclo do...while para que el ciclo empuje solo el número 10 a myArray, e i sea igual a 11 cuando su código haya terminado de ejecutarse.

El código con la solución se encuentra aquí:Download

Replace Loops using Recursion

La recursión es el concepto de que una función puede expresarse en términos de sí misma. Para ayudar a comprender esto, comience por pensar en la siguiente tarea, multiplique los elementos de 0 a n inclusive en una matriz para crear el producto de esos elementos. Usando un bucle for, puedes hacer esto:

  function multiply(arr, n) {
    var product = 1;
    for (var i = 0; i < n; i++) {
        product *= arr[i];
    }
    return product;
  }

Sin embargo, observe que multiply(arr, n) == multply(arr, n-1) * arr[n-1] Eso significa que puede reescribir multiply en términos de sí mismo y nunca necesitará usar un bucle.

  function multiply(arr, n) {
    if (n <= 0) {
      return 1;
    } else {
      return multiply(arr, n - 1) * arr[n - 1];
    }
  }

La versión recursiva de multiply se descompone así. En el caso base, donde n<=0, devuelve 1. Para valores mayores de n, se llama a sí mismo, pero con n-1. Esa llamada a la función se evalúa de la misma manera, llamando a multiply hasta n<=0. En este punto, todas las funciones pueden regresar y multiply original devuelve la respuesta.

Nota. Las funciones recursivas deben tener un caso base cuando regresan sin volver a llamar a la función ( en este ejemplo, cuando n<=0), de lo contrario, nunca podrán finalizar la ejecución.

Escribe una función recursiva, sum(arr, n), que devuelva la sima de los elementos de 0 a n inclusive en una matriz arr.

El código con la solución se encuentra aquí:Download

Profile Lookup

Tenemos una variedad de objetos que representan a diferentes personas en nuestras lista de contactos.

Se ha escrito un función lookUpProfile que toma el name y una propiedad (prop)como argumentos.

La función debe verificar si el name es el fistName de un contacto y la propiedad dada es una propiedad de ese contacto.

Si ambas son verdaderas, devuelva el value de esa propiedad.

Si name no corresponde a ningún contacto, devuelva No such contact.

Si prop no corresponde a ninguna propiedad valida de un contacto que coincida con el name, devuelva No such property.

El código con la solución se encuentra aquÍ:Download

Generate Random Fractions with JavaScript

Los números aleatorios son útiles para crear comportamientos aleatorios.

JavaScript tiene una función Math.random() que genera un número decimal aleatorio entre 0 (inclusive) y no hasta 1(excluido). Por lo tanto, Math.random puede devolver un 0 pero nunca devolver un 1.

Nota. Al igual que el almacenamiento de valores con el operador =, todas las llamadas a funciones se resolverá antes de que se ejecute el retorno, por lo que podemos devolver el valor de la función Math.random().

Cambie randomFraction para devolver un número aleatorio en lugar de devolver 0.

El código con la solución se encuentra aquí:Download

Generate Random Whole Numbers with JavaScript

Es genial que podamos generar números decimales aleatorios, pero es aún más útil si lo usamos par generar números enteros aleatorios.

  1. Use Math.random() para generar un decimal aleatorio.
  2. Multiplique ese número decimal aleatorio por 20.
  3. Use otra funcion, Math.floor () para redondear el número a su número entero mas cercano (creo que al más bajo).

Recuerde que Math.random() nunca puede devolver un 1 y debido a que estamos redondeando hacia abajo, es imposible obtener 20. Esta técnica nos dará un número entro 0 y 19.

Poniendo todo junto, así es como se ve nuestro código:

Math.floor(Math.random() * 20);

Estamos llamando a Math.random(), multiplicando el resultado por 20, luego pasando el valor a la función Math.floor() para redondear el valor al número entero más cercano.

Use esta técnica para generar y devolver un número entero aleatorio entre 0 y 9.

El código con la solución se encuentra aquí:Download

Generate Random Whole Numbers within a Range

En lugar de generar un número aleatorio entre cero y un número dado como lo hicimos antes, podemos generar un número aleatorio que se encuentre dentro de un rango de dos números específicos.

Para hacer esto, definiremos un número mínimo min y un número máximo max.

Aquí está la fórmula que usaremos. Tómese un momentos para leerlo e intente comprender qué está haciendo este código:

Math.floor(Math.random() * (max - min + 1)) + min

Cree una función llamada randomRange que tome un rango myMin y myMax y devuelva un número aleatorio que sea mayor o igual que myMin, y que sea menor o igual que myMax, inclusive.

El código con la solución se encuentra aquí:Download

Use the parseInt Function

La función parseInt() analiza un string y devuelve un entero. Aquí hay un ejemplo:

var a = parseInt("007");

La función anterior convierte la cadena "007" en un entero 7. Si el primer carácter de la cadena no se puede convertir en un número, devuelve NaN.

Use parseInt() en la función convertToInteger para que convierta la cadena de entrada str en un entero y lo devuelva.

El código con la solución se encuentra aquí:Download

Use the parseInt Function with a Radix

La función parseInt() analiza una cadena y devuelve un entero. Se necesita un segundo argumento para la raíz, que especifica la base del número en la cadena. La raíz puede ser un número entero entre 2 y 36.

La llamada a la función se ve así:

parseInt(string, radix);

Y aquí hay un ejemplo:

var a = parseInt("11", 2);

La variable radix dice que "11" está en el sistema binario, o base 2. Este ejemplo convierte la cadena "11" en un número entero 3.

Use parseInt() en la función convertToInteger para que convierta un número binario en un entero y lo devuelva.

El código con la solución se encuentra aquí:Download

Use the Conditional (Ternary) Operator

El operador condicional, también llamado operador ternario, se puede usar como una expresión if-else de una línea.

La sintaxis es:

condition ? statement-if-true : statement-if-false;

La siguiente función utiliza una instrucción if-else para verificar una condición:

function findGreater(a, b) {
  if(a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Esto puede reescribirse usando el operador condicional:

function findGreater(a, b) {
  return a > b ? "a is greater" : "b is greater";
}

Use el operador condicional en la función checkEqual para verificar si dos números son iguales o no. La función debe devolver "Equal" o "Not Equal".

El código con la solución se encuentra aquí:Download

Use Multiple Conditional (Ternary) Operators

En el desafío anterior, usaste un único operador condicional. También puede encadenarlos para verificar múltiples condiciones.

La siguiente función usa sentencias if, else if y else para verificar múltiples condiciones.

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

La función anterior puede reescribirse usando múltiples operadores condicionales:

function findGreaterOrEqual(a, b) {
  return (a === b) ? "a and b are equal" 
    : (a > b) ? "a is greater" 
    : "b is greater";
}

Sin embargo, esto debe usarse con cuidado ya que el uso de múltiples operadores condicionales sin sangría adecuada puede hacer que su código sea difícil de leer. Por ejemplo:

function findGreaterOrEqual(a, b) {
  return (a === b) ? "a and b are equal" : (a > b) ? "a is greater" : "b is greater";
}

Use múltiples operadores condicionales en la función checkSign para verificar si un número es positivo, negativo o cero. La función debe devolver "positive", "negative" o "zero".

El código con la función se encuentra aquí:Download

Use Recursion to Create a Countdown

En un desafío anterior, aprendió a usar la recursividad para reemplazar un bucle for. Ahora, veamos una función más compleja que devuelve una matriz de enteros consecutivos que comienzan con 1 hasta el número pasado a la función.

Como se mencionó en el desafío anterior, habrá un caso base. El caso base le dice a la función recursiva cuando ya no necesita llamarse a sí misma. Es un caso simple donde el valor de retorno ya se conoce. También habrá una llamada recursiva que ejecuta la función original con diferentes argumentos. Si la función se escribe correctamente, finalmente se alcanzará el caso base.

Por ejemplo, supongamos que desea escribir una función recursiva que devuelva una matriz que contenga los números del 1 al n. Esta función deberá aceptar un argumento n, que represente el número final. Entonces tendrá que llamarse a sí mismo con valores progresivamente más pequeños de n hasta que llegue a 1. Puede escribir la función de la siguiente manera:

function countup(n) {
  if (n < 1) {
    return [];
  } else {
    const countArray = countup(n - 1);
    countArray.push(n);
    return countArray;
  }
}
console.log(countup(5)); // [ 1, 2, 3, 4, 5 ]

Al principio, esto parece contradictorio ya que el valor de n disminuye, pero los valores en la matriz final está aumentando. Esto sucede porque la insercción ocurre en último lugar, después de que la llamada recursiva ha regresado. El punto donde n es empujado a la matriz, la cuenta (n-1) ya ha sido evaluada y devuelta [1, 2, ..., n - 1].

Hemos definido una función llamada countdown con un parámetro n. La función debe usar la recursión para devolver una matriz que contiene los enteros n a 1 en función del parámetro n. Si se llama a la función con un número menor que 1, la función debe devolver una matriz vacía. Por ejemplo, llamar a esta función con n=5 debería devolver la matriz [5, 4, 3, 2, 1]. Su función debe usar la recursión llamándose a sí misma y no dene usar bucles de ningún tipo.

El código con la solución se encuentra aquí:Download.

Use Recursion to Create a Range of Numbers

Continuando con el desafío anterior, le brindamos otra oportunidad para crear una función recursiva para resolver un problema.

Hemos definido una función llamada rangeOfNumbers con dos parámetros. La función debe devolver una matriz de enteros que comienza con un número representado por el parámetro startNum y termina con un número representado por el parámetro endNum. El número inicial siempre será menor o igual que el número final. Su función debe usar la recusión llamándose a sí misma y no usar bucles de ningún tipo. También debería funcionar para los casos en que startNum y endNum son iguales.

El código con la solución se encuentra aquí:Download.