<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[@devandmus]]></title><description><![CDATA[Coucou!
Soy Andrés Ignacio @devandmus.
Trabajo como Tech Lead en WOM Chile y me encanta ayudar, compartir y aportar a la comunidad.
Actualmente me especializo e]]></description><link>https://blog.devandmus.com</link><generator>RSS for Node</generator><lastBuildDate>Mon, 11 May 2026 08:50:22 GMT</lastBuildDate><atom:link href="https://blog.devandmus.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Trabajo asíncrono en Javascript: Promesas y async/await]]></title><description><![CDATA[Como desarrollador en JavaScript, es probable que hayas escuchado acerca de las promesas y el uso de async/await para manejar su flujo. En esta artículo, te explicaré qué son las promesas, cómo se usan y cómo async/await puede ayudar a manejar el flu...]]></description><link>https://blog.devandmus.com/trabajo-asincrono-en-javascript-promesas-y-async-await</link><guid isPermaLink="true">https://blog.devandmus.com/trabajo-asincrono-en-javascript-promesas-y-async-await</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[promises]]></category><category><![CDATA[asynchronous]]></category><category><![CDATA[async/await]]></category><dc:creator><![CDATA[Andrés Ignacio Maldonado]]></dc:creator><pubDate>Tue, 05 Sep 2023 02:00:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/L4J8U_Rkt4s/upload/aea3a086af3ca9b6df2009e18ad07db4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Como desarrollador en JavaScript, es probable que hayas escuchado acerca de las promesas y el uso de async/await para manejar su flujo. En esta artículo, te explicaré qué son las promesas, cómo se usan y cómo async/await puede ayudar a manejar el flujo de trabajo.</p>
<h2 id="heading-promesas"><strong>Promesas</strong></h2>
<p>Una promesa en JavaScript es un objeto que representa un valor que puede no estar disponible todavía, pero que se espera que lo esté en algún momento. Las promesas se utilizan para manejar operaciones asíncronas que toman tiempo en completarse, como hacer una solicitud HTTP o leer un archivo.</p>
<h3 id="heading-creando-una-promesa"><strong>Creando una promesa</strong></h3>
<p>Para crear una promesa en JavaScript, utilizamos el constructor <kbd>Promise</kbd>. Este constructor toma una función como argumento, que a su vez toma dos argumentos: <kbd>resolve</kbd> y <kbd>reject</kbd>. <kbd>resolve</kbd> se utiliza para devolver el valor de la promesa una vez que se ha completado exitosamente, mientras que <kbd>reject</kbd> se utiliza para devolver el error en caso de que la promesa falle.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> promise = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Promise</span>(<span class="hljs-function">(<span class="hljs-params">resolve, reject</span>) =&gt;</span> {
  <span class="hljs-comment">// ... do some async work</span>
  <span class="hljs-keyword">if</span> (success) {
    resolve(result);
  } <span class="hljs-keyword">else</span> {
    reject(error);
  }
});
</code></pre>
<h3 id="heading-consumiendo-una-promesa"><strong>Consumiendo una promesa</strong></h3>
<p>Para consumir una promesa, podemos usar los métodos <kbd>then</kbd> y <kbd>catch</kbd>. <kbd>then</kbd> se utiliza para manejar el valor de la promesa en caso de que se resuelva correctamente, mientras que <kbd>catch</kbd> se utiliza para manejar el error en caso de que la promesa falle.</p>
<pre><code class="lang-javascript">promise.then(<span class="hljs-function">(<span class="hljs-params">result</span>) =&gt;</span> {
  <span class="hljs-built_in">console</span>.log(result);
}).catch(<span class="hljs-function">(<span class="hljs-params">error</span>) =&gt;</span> {
  <span class="hljs-built_in">console</span>.error(error);
});
</code></pre>
<h2 id="heading-asyncawait"><strong>Async/Await</strong></h2>
<p><kbd>async/await</kbd> es una forma de manejar promesas en JavaScript que se introdujo en ES2017. <kbd>async</kbd> se utiliza para marcar una función como asincrónica, lo que significa que devolverá una promesa en lugar de un valor directo. <kbd>await</kbd> se utiliza dentro de una función <kbd>async</kbd> para esperar a que una promesa se resuelva antes de continuar con la ejecución del código.</p>
<h3 id="heading-buenas-practicas"><strong>Buenas prácticas</strong></h3>
<p>Cuando se trabaja con <kbd>async/await</kbd>, es importante asegurarse de que se manejen correctamente los errores. Una forma de hacerlo es envolver el código <kbd>await</kbd> en un bloque <kbd>try/catch</kbd>.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">myFunction</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">try</span> {
    <span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> someAsyncFunction();
    <span class="hljs-built_in">console</span>.log(result);
  } <span class="hljs-keyword">catch</span> (error) {
    <span class="hljs-built_in">console</span>.error(error);
  }
}
</code></pre>
<p>Además, es importante tener en cuenta que el uso excesivo de <kbd>async/await</kbd> puede afectar el rendimiento del código. Por lo tanto, se recomienda utilizarlo solo cuando sea necesario.</p>
<h3 id="heading-malas-practicas"><strong>Malas prácticas</strong></h3>
<p>Una mala práctica común cuando se trabaja con <kbd>async/await</kbd> es no manejar correctamente los errores. Si no se envuelve el código <kbd>await</kbd> en un bloque <kbd>try/catch</kbd>, los errores pueden propagarse y causar problemas en otras partes del código.</p>
<p>Otra mala práctica es utilizar <kbd>async/await</kbd> en funciones que no necesitan ser asincrónicas. Esto puede afectar negativamente el rendimiento y la legibilidad del código.</p>
<h2 id="heading-conclusion"><strong>Conclusión</strong></h2>
<p>En resumen, las promesas son una forma de manejar operaciones asíncronas en JavaScript, mientras que async/await es una forma más fácil de manejar el flujo de trabajo al trabajar con promesas. Es importante seguir buenas prácticas, como manejar correctamente los errores y utilizar async/await solo cuando sea necesario, para asegurarse de que el código sea legible y eficiente.</p>
<p>Si quieres profundizar más sobre el tema, te recomiendo siempre revisar la documentación oficial, seguirme en redes sociales o suscribirte a la newsletter del blog para seguir aprendiendo. Enjoy the journey!</p>
<h3 id="heading-fuentes"><strong>Fuentes</strong></h3>
<ul>
<li><p><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">MDN Web Docs - Promise</a></p>
</li>
<li><p><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function">MDN Web Docs - async function</a></p>
</li>
<li><p><a target="_blank" href="http://JavaScript.info">JavaScript.info</a> <a target="_blank" href="https://javascript.info/async-await">- Async/await</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Pila de ejecución de JavaScript]]></title><description><![CDATA[Si estás familiarizado con JavaScript, probablemente hayas oído hablar de la pila de ejecución y el bucle de eventos. Estos son dos componentes clave del motor de JavaScript que se utilizan para controlar el flujo de ejecución del código y manejar la...]]></description><link>https://blog.devandmus.com/pila-de-ejecucion-de-javascript</link><guid isPermaLink="true">https://blog.devandmus.com/pila-de-ejecucion-de-javascript</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[callstack]]></category><category><![CDATA[programming languages]]></category><category><![CDATA[Programming Tips]]></category><dc:creator><![CDATA[Andrés Ignacio Maldonado]]></dc:creator><pubDate>Fri, 25 Aug 2023 03:42:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ObpCE_X3j6U/upload/f52ea634e58bff19d35ce7b83bf9a15e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Si estás familiarizado con JavaScript, probablemente hayas oído hablar de la pila de ejecución y el bucle de eventos. Estos son dos componentes clave del motor de JavaScript que se utilizan para controlar el flujo de ejecución del código y manejar la asincronía.</p>
<h2 id="heading-que-es-la-pila-de-ejecucion"><strong>¿Qué es la pila de ejecución?</strong></h2>
<p>La pila de ejecución en JavaScript es una pila <strong>LIFO</strong> (<em>Last In, First Out</em>) que se utiliza para almacenar y controlar el contexto de ejecución de una función. Cuando se llama a una función, su contexto de ejecución se añade a la pila de ejecución. A medida que se ejecuta el código, se van añadiendo elementos a la pila y eliminando elementos de la parte superior de la misma.</p>
<h2 id="heading-ejemplo-de-pila-de-ejecucion"><strong>Ejemplo de pila de ejecución</strong></h2>
<p>Para entender mejor cómo funciona la pila de ejecución, veamos un ejemplo. Supongamos que tenemos el siguiente código:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">a</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Función A'</span>);
  b();
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">b</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Función B'</span>);
  c();
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">c</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Función C'</span>);
}

a();
</code></pre>
<p>Cuando se llama a la función <kbd>a()</kbd>, su contexto de ejecución se añade a la pila de ejecución. Dentro de <kbd>a()</kbd>, se llama a la función <kbd>b()</kbd>, por lo que su contexto de ejecución se añade a la pila de ejecución sobre el de <kbd>a()</kbd>. Dentro de <kbd>b()</kbd>, se llama a la función <kbd>c()</kbd>, por lo que su contexto de ejecución se añade a la pila de ejecución sobre el de <kbd>b()</kbd>.</p>
<p>En este punto, la pila de ejecución se vería así:</p>
<pre><code class="lang-javascript">c()
b()
a()
</code></pre>
<p>Una vez que la función <kbd>c()</kbd> termina de ejecutarse, su contexto de ejecución se elimina de la pila. Luego, la función <kbd>b()</kbd> termina de ejecutarse y su contexto de ejecución se elimina de la pila. Por último, la función <kbd>a()</kbd> termina de ejecutarse y su contexto de ejecución se elimina de la pila. En este punto, la pila de ejecución estaría vacía.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">a</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Función A'</span>);
  b();
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'B sale de la pila, termina ejecución'</span>);
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">b</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Función B'</span>);
  c();
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'C sale de la pila, termina ejecución'</span>);
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">c</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Función C'</span>);
}

<span class="hljs-comment">// Función A</span>
<span class="hljs-comment">// Función B</span>
<span class="hljs-comment">// Función C</span>
<span class="hljs-comment">// C sale de la pila</span>
<span class="hljs-comment">// B sale de la pila</span>
</code></pre>
<h2 id="heading-que-es-el-bucle-de-eventos"><strong>¿Qué es el bucle de eventos?</strong></h2>
<p>El bucle de eventos es un mecanismo que se utiliza en JavaScript para manejar la asincronía. En lugar de esperar a que una tarea asíncrona se complete antes de continuar con otra tarea, el bucle de eventos permite que el código siga ejecutándose mientras espera que la tarea asíncrona se complete.</p>
<p>Cuando se ejecuta una tarea asíncrona, como una petición de red o una animación, el código se coloca en una cola de eventos en lugar de en la pila de ejecución. El bucle de eventos se encarga de tomar los elementos de la cola de eventos y ejecutarlos en la pila de ejecución.</p>
<h2 id="heading-ejemplo-de-bucle-de-eventos"><strong>Ejemplo de bucle de eventos</strong></h2>
<p>Para entender mejor cómo funciona el bucle de eventos, veamos otro ejemplo. Supongamos que tenemos el siguiente código:</p>
<pre><code class="lang-javascript"><span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Inicio'</span>);

<span class="hljs-built_in">setTimeout</span>(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Temporizador'</span>);
}, <span class="hljs-number">0</span>);

<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Fin'</span>);
</code></pre>
<p>Cuando se ejecuta este código, primero se imprime 'Inicio' en la consola. A continuación, se llama a la función <kbd>setTimeout()</kbd> con un tiempo de espera de 0 milisegundos. A pesar de que el tiempo de espera es 0, la función <kbd>setTimeout()</kbd> se ejecutará de forma asíncrona y no se añadirá a la pila de ejecución hasta que todas las otras tareas se completen.</p>
<p>A continuación, se imprime 'Fin' en la consola. Finalmente, cuando todas las tareas se han completado, la función <kbd>setTimeout()</kbd> se añade a la cola de eventos y, posteriormente, a la pila de ejecución. En este punto, se imprimirá 'Temporizador' en la consola.</p>
<h2 id="heading-ejemplos-adicionales"><strong>Ejemplos adicionales</strong></h2>
<p>Para entender mejor cómo se utilizan la pila de ejecución y el bucle de eventos en situaciones reales, aquí hay algunos ejemplos adicionales:</p>
<h3 id="heading-ejemplo-1-boton-de-carga"><strong>Ejemplo 1: Botón de carga</strong></h3>
<p>Supongamos que tenemos un botón de carga en una página web que, cuando se hace clic, carga una imagen desde un servidor remoto y la muestra en la página. El código para este botón podría verse así:</p>
<pre><code class="lang-javascript">button.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  img.src = <span class="hljs-string">'&lt;https://example.com/image.jpg&gt;'</span>;
});
</code></pre>
<p>Cuando se hace clic en el botón, se añade un evento a la cola de eventos. Este evento se ejecutará después de que todas las otras tareas se completen. Cuando se ejecuta el evento, se carga la imagen desde el servidor y se muestra en la página.</p>
<h3 id="heading-ejemplo-2-animacion"><strong>Ejemplo 2: Animación</strong></h3>
<p>Supongamos que tenemos una animación que hace que un elemento de la página se desplace de izquierda a derecha. El código para esta animación podría verse así:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">animate</span>(<span class="hljs-params"></span>) </span>{
  element.style.left = <span class="hljs-string">'0'</span>;

  <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
    element.style.left = <span class="hljs-string">'100%'</span>;
    animate();
  }, <span class="hljs-number">1000</span>);
}

animate();
</code></pre>
<p>En este ejemplo, la función <kbd>animate()</kbd> se llama a sí misma de forma recursiva utilizando <kbd>setTimeout()</kbd>. Cada vez que se llama a la función, se actualiza la posición del elemento y se establece un temporizador para llamar a la función de nuevo después de un segundo. Este patrón de recursión asíncrona es común en las animaciones en JavaScript.</p>
<h2 id="heading-conclusion"><strong>Conclusión</strong></h2>
<p>En resumen, la pila de ejecución y el bucle de eventos son dos componentes clave del motor de JavaScript. La pila de ejecución se utiliza para controlar el flujo de ejecución del código, mientras que el bucle de eventos se utiliza para manejar la asincronía. Entender cómo funcionan estos dos componentes es esencial para escribir código eficiente en JavaScript.</p>
<p>Espero que esta introducción a la pila de ejecución y el bucle de eventos te haya resultado útil. Si quieres aprender más sobre JavaScript, te recomiendo que consultes las siguientes fuentes:</p>
<ul>
<li><p><a target="_blank" href="https://developer.mozilla.org/es/docs/Web/JavaScript">MDN Web Docs</a></p>
</li>
<li><p><a target="_blank" href="https://www.w3schools.com/js/">W3Schools</a></p>
</li>
<li><p><a target="_blank" href="http://JavaScript.info">JavaScript.info</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Estructuras de control en JavaScript]]></title><description><![CDATA[Las estructuras de control en JavaScript nos permiten tomar decisiones en función de ciertas condiciones y controlar el flujo de ejecución de un programa. En este artículo, exploraremos estas estructuras y cómo utilizarlas para escribir código más li...]]></description><link>https://blog.devandmus.com/estructuras-de-control-en-javascript</link><guid isPermaLink="true">https://blog.devandmus.com/estructuras-de-control-en-javascript</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[Programming Tips]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[clean code]]></category><dc:creator><![CDATA[Andrés Ignacio Maldonado]]></dc:creator><pubDate>Wed, 16 Aug 2023 00:15:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ZaGcU6BxJEc/upload/56a1270c753ff23f418ae40e4c9b94b0.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Las estructuras de control en JavaScript nos permiten tomar decisiones en función de ciertas condiciones y controlar el flujo de ejecución de un programa. En este artículo, exploraremos estas estructuras y cómo utilizarlas para escribir código más limpio y eficiente.</p>
<h2 id="heading-if"><strong>If</strong></h2>
<p>La estructura <kbd>if</kbd> es una de las más básicas y comunes en JavaScript. Nos permite ejecutar un bloque de código si se cumple una condición determinada. Por ejemplo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> age = <span class="hljs-number">18</span>;

<span class="hljs-keyword">if</span> (age &gt;= <span class="hljs-number">18</span>) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Eres mayor de edad"</span>);
}

<span class="hljs-comment">// "Eres mayor de edad"</span>
</code></pre>
<p>Evaluamos si la variable <kbd>age</kbd> es mayor o igual que 18. Si se cumple esta condición, se ejecutará el bloque de código dentro de las llaves <kbd>{}</kbd>. Si este código es de una sola línea, podemos omitir las llaves, con salto de línea o separado por espacio. Por ejemplo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> age = <span class="hljs-number">18</span>;

<span class="hljs-comment">// con salto de línea</span>
<span class="hljs-keyword">if</span> (age &gt;= <span class="hljs-number">18</span>)
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Eres mayor de edad"</span>);
<span class="hljs-comment">// "Eres mayor de edad"</span>

<span class="hljs-comment">// en la misma línea</span>
<span class="hljs-keyword">if</span> (age &gt;= <span class="hljs-number">18</span>) <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Eres mayor de edad"</span>);
<span class="hljs-comment">// "Eres mayor de edad"</span>
</code></pre>
<h2 id="heading-if-else"><strong>If-else</strong></h2>
<p>La estructura <kbd>if-else</kbd> nos permite ejecutar un bloque de código si se cumple una condición, y otro bloque de código si no se cumple. Por ejemplo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> age = <span class="hljs-number">16</span>;

<span class="hljs-keyword">if</span> (age &gt;= <span class="hljs-number">18</span>) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Eres mayor de edad"</span>);
} <span class="hljs-keyword">else</span> {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Eres menor de edad"</span>);
}

<span class="hljs-comment">// "Eres menor de edad"</span>
</code></pre>
<p>Si la variable <kbd>age</kbd> es mayor o igual que 18, se ejecutará el primer bloque de código. Si no se cumple esta condición, se ejecutará el bloque de código dentro del <kbd>else</kbd>.</p>
<h2 id="heading-if-else-if"><strong>If-else-if</strong></h2>
<p>La estructura <kbd>if-else-if</kbd> nos permite agregar varias condiciones a nuestra evaluación. Por ejemplo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> day = <span class="hljs-number">3</span>;

<span class="hljs-keyword">if</span> (day === <span class="hljs-number">1</span>) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es lunes"</span>);
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (day === <span class="hljs-number">2</span>) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es martes"</span>);
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (day === <span class="hljs-number">3</span>) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es miércoles"</span>);
} <span class="hljs-keyword">else</span> {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es otro día"</span>);
}

<span class="hljs-comment">// "Es miércoles"</span>
</code></pre>
<p>Evaluamos el valor de la variable <kbd>day</kbd>. Si es igual a 1, se ejecutará el primer bloque de código. Si es igual a 2, se ejecutará el segundo bloque de código. Si es igual a 3, se ejecutará el tercer bloque de código. Si no se cumple ninguna de estas condiciones, se ejecutará el bloque de código dentro del <kbd>else</kbd>.</p>
<h2 id="heading-switch"><strong>Switch</strong></h2>
<p>La estructura <kbd>switch</kbd> nos permite ejecutar diferentes bloques de código dependiendo del valor de una variable. Es similar a la estructura <kbd>if-else-if</kbd>, pero puede ser más fácil de leer y escribir en algunos casos. Por ejemplo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> day = <span class="hljs-number">3</span>;

<span class="hljs-keyword">switch</span> (day) {
  <span class="hljs-keyword">case</span> <span class="hljs-number">1</span>:
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es lunes"</span>);
    <span class="hljs-keyword">break</span>;
  <span class="hljs-keyword">case</span> <span class="hljs-number">2</span>:
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es martes"</span>);
    <span class="hljs-keyword">break</span>;
  <span class="hljs-keyword">case</span> <span class="hljs-number">3</span>:
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es miércoles"</span>);
    <span class="hljs-keyword">break</span>;
  <span class="hljs-keyword">default</span>:
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Es otro día"</span>);
}

<span class="hljs-comment">// "Es miércoles"</span>
</code></pre>
<p>Evaluamos el valor de la variable <kbd>day</kbd>. Si es igual a 1, se ejecutará el primer bloque de código. Si es igual a 2, se ejecutará el segundo bloque de código. Si es igual a 3, se ejecutará el tercer bloque de código. Si no se cumple ninguna de estas condiciones, se ejecutará el bloque de código dentro del <kbd>default</kbd>.</p>
<h2 id="heading-elvisternario"><strong>Elvis/Ternario</strong></h2>
<p>La estructura <kbd>elvis</kbd> o <kbd>ternario</kbd> es una forma abreviada de escribir una evaluación <kbd>if-else</kbd>. Es útil cuando queremos asignar un valor a una variable dependiendo de una condición determinada. Por ejemplo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> age = <span class="hljs-number">18</span>;

<span class="hljs-keyword">const</span> message = age &gt;= <span class="hljs-number">18</span> ? <span class="hljs-string">"Eres mayor de edad"</span> : <span class="hljs-string">"Eres menor de edad"</span>;

<span class="hljs-built_in">console</span>.log(message);

<span class="hljs-comment">// "Eres mayor de edad"</span>
</code></pre>
<p>Evaluamos si la variable <kbd>age</kbd> es mayor o igual que 18. Si se cumple esta condición, la variable <kbd>message</kbd> será igual a <kbd>"Eres mayor de edad"</kbd>. Si no se cumple esta condición, la variable <kbd>message</kbd> será igual a <kbd>"Eres menor de edad"</kbd>. Luego, estamos imprimiendo el valor de la variable <kbd>message</kbd> en la consola.</p>
<h2 id="heading-conclusion"><strong>Conclusión</strong></h2>
<p>En JavaScript, las estructuras de control nos permiten tomar decisiones y ejecutar diferentes bloques de código en función de ciertas condiciones. En este artículo, hemos explorado estas estructuras y cómo utilizarlas para escribir código eficiente y claro.</p>
<p>Si quieres profundizar más sobre el tema, te recomiendo siempre revisar la documentación oficial, seguirme en redes sociales o suscribirte a la newsletter del blog para seguir aprendiendo. Enjoy the journey!</p>
<h3 id="heading-fuentes"><strong>Fuentes</strong></h3>
<ul>
<li><p>Documentación oficial de JavaScript: <a target="_blank" href="https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores">https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores</a></p>
</li>
<li><p>Ejemplos prácticos de estructuras de control en JavaScript: <a target="_blank" href="https://www.w3schools.com/js/js_if_else.asp">https://www.w3schools.com/js/js_if_else.asp</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[10 Array Methods esenciales para tu arsenal]]></title><description><![CDATA[Los arreglos son una estructura de datos fundamental en cualquier lenguaje de programación. En JavaScript, los arreglos son objetos que permiten almacenar una colección de elementos ordenados. Los elementos pueden ser de cualquier tipo, incluyendo nú...]]></description><link>https://blog.devandmus.com/10-array-methods-esenciales-para-tu-arsenal</link><guid isPermaLink="true">https://blog.devandmus.com/10-array-methods-esenciales-para-tu-arsenal</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[array methods]]></category><category><![CDATA[array]]></category><category><![CDATA[arrays]]></category><dc:creator><![CDATA[Andrés Ignacio Maldonado]]></dc:creator><pubDate>Thu, 27 Jul 2023 22:06:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/2JIvboGLeho/upload/e4bf536f055c23513b4b70b7fc8d9884.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Los arreglos son una estructura de datos fundamental en cualquier lenguaje de programación. En JavaScript, los arreglos son objetos que permiten almacenar una colección de elementos ordenados. Los elementos pueden ser de cualquier tipo, incluyendo números, cadenas, objetos y funciones.</p>
<p>Los métodos de arreglos son funciones predefinidas que se utilizan para manipular y transformar los arreglos. Estos métodos son el pilar fundamental para trabajar de manera libre y eficiente con JavaScript.</p>
<h2 id="heading-foreach">forEach()</h2>
<p>El método <code>forEach()</code> es una forma sencilla de recorrer todos los elementos de un arreglo y realizar una acción en cada uno de ellos. Este método ejecuta una función para cada elemento del arreglo.</p>
<p>La función proporcionada como argumento a <code>forEach()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>];

array1.forEach(<span class="hljs-function"><span class="hljs-params">element</span> =&gt;</span> <span class="hljs-built_in">console</span>.log(element));

<span class="hljs-comment">// Output:</span>
<span class="hljs-comment">// "a"</span>
<span class="hljs-comment">// "b"</span>
<span class="hljs-comment">// "c"</span>
</code></pre>
<h2 id="heading-map">map()</h2>
<p>El método <code>map()</code> es una forma eficiente de transformar los elementos de un arreglo en otros elementos. Este método crea un nuevo arreglo con los resultados de la llamada a una función para cada elemento del arreglo.</p>
<p>La función proporcionada como argumento a <code>map()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-number">1</span>, <span class="hljs-number">4</span>, <span class="hljs-number">9</span>, <span class="hljs-number">16</span>];

<span class="hljs-keyword">const</span> map1 = array1.map(<span class="hljs-function"><span class="hljs-params">x</span> =&gt;</span> x * <span class="hljs-number">2</span>);

<span class="hljs-built_in">console</span>.log(map1);

<span class="hljs-comment">// Output: [2, 8, 18, 32]</span>
</code></pre>
<h2 id="heading-filter">filter()</h2>
<p>El método <code>filter()</code> es una forma útil de filtrar los elementos de un arreglo y obtener solo aquellos que cumplen ciertas condiciones. Este método crea un nuevo arreglo con todos los elementos que cumplan la condición implementada en la función proporcionada.</p>
<p>La función proporcionada como argumento a <code>filter()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> words = [<span class="hljs-string">'spray'</span>, <span class="hljs-string">'limit'</span>, <span class="hljs-string">'elite'</span>, <span class="hljs-string">'exuberant'</span>, <span class="hljs-string">'destruction'</span>, <span class="hljs-string">'present'</span>];

<span class="hljs-keyword">const</span> result = words.filter(<span class="hljs-function"><span class="hljs-params">word</span> =&gt;</span> word.length &gt; <span class="hljs-number">6</span>);

<span class="hljs-built_in">console</span>.log(result);

<span class="hljs-comment">// Output: ["exuberant", "destruction", "present"]</span>
</code></pre>
<h2 id="heading-reduce">reduce()</h2>
<p>El método <code>reduce()</code> es una forma poderosa de reducir un arreglo a un solo valor. Este método aplica una función acumuladora que procesa cada elemento de un arreglo y devuelve un único valor.</p>
<p>La función proporcionada como argumento a <code>reduce()</code> recibe cuatro argumentos:</p>
<ol>
<li><p>El acumulador</p>
</li>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>];

<span class="hljs-keyword">const</span> reducer = <span class="hljs-function">(<span class="hljs-params">accumulator, currentValue</span>) =&gt;</span> accumulator + currentValue;

<span class="hljs-comment">// 1 + 2 + 3 + 4</span>
<span class="hljs-built_in">console</span>.log(array1.reduce(reducer));

<span class="hljs-comment">// Output: 10</span>
</code></pre>
<h2 id="heading-find">find()</h2>
<p>El método <code>find()</code> es una forma sencilla de encontrar el primer elemento que cumple cierta condición. Este método devuelve el valor del primer elemento del arreglo que cumple con la función de prueba proporcionada.</p>
<p>La función proporcionada como argumento a <code>find()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-number">5</span>, <span class="hljs-number">12</span>, <span class="hljs-number">8</span>, <span class="hljs-number">130</span>, <span class="hljs-number">44</span>];

<span class="hljs-keyword">const</span> found = array1.find(<span class="hljs-function"><span class="hljs-params">element</span> =&gt;</span> element &gt; <span class="hljs-number">10</span>);

<span class="hljs-built_in">console</span>.log(found);

<span class="hljs-comment">// Output: 12</span>
</code></pre>
<h2 id="heading-findindex">findIndex()</h2>
<p>El método <code>findIndex()</code> es una forma sencilla de encontrar el índice del primer elemento que cumple cierta condición. Este método devuelve el índice del primer elemento del arreglo que cumple con la función de prueba proporcionada.</p>
<p>La función proporcionada como argumento a <code>findIndex()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-number">5</span>, <span class="hljs-number">12</span>, <span class="hljs-number">8</span>, <span class="hljs-number">130</span>, <span class="hljs-number">44</span>];

<span class="hljs-keyword">const</span> isLargeNumber = <span class="hljs-function"><span class="hljs-params">element</span> =&gt;</span> element &gt; <span class="hljs-number">13</span>;

<span class="hljs-built_in">console</span>.log(array1.findIndex(isLargeNumber));

<span class="hljs-comment">// Output: 3</span>
</code></pre>
<h2 id="heading-every">every()</h2>
<p>El método <code>every()</code> es una forma sencilla de comprobar si todos los elementos de un arreglo cumplen cierta condición. Este método comprueba si todos los elementos del arreglo pasan la prueba implementada por la función proporcionada.</p>
<p>La función proporcionada como argumento a <code>every()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-number">1</span>, <span class="hljs-number">30</span>, <span class="hljs-number">39</span>, <span class="hljs-number">29</span>, <span class="hljs-number">10</span>, <span class="hljs-number">13</span>];

<span class="hljs-keyword">const</span> isBelowThreshold = <span class="hljs-function"><span class="hljs-params">currentValue</span> =&gt;</span> currentValue &lt; <span class="hljs-number">40</span>;

<span class="hljs-built_in">console</span>.log(array1.every(isBelowThreshold));

<span class="hljs-comment">// Output: true</span>
</code></pre>
<h2 id="heading-some">some()</h2>
<p>El método <code>some()</code> es una forma sencilla de comprobar si al menos un elemento de un arreglo cumple cierta condición. Este método comprueba si al menos un elemento del arreglo cumple con la prueba implementada por la función proporcionada.</p>
<p>La función proporcionada como argumento a <code>some()</code> recibe tres argumentos:</p>
<ol>
<li><p>El valor del elemento actual</p>
</li>
<li><p>El índice del elemento actual</p>
</li>
<li><p>El arreglo que se está recorriendo</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];

<span class="hljs-keyword">const</span> even = <span class="hljs-function"><span class="hljs-params">element</span> =&gt;</span> element % <span class="hljs-number">2</span> === <span class="hljs-number">0</span>;

<span class="hljs-built_in">console</span>.log(array1.some(even));

<span class="hljs-comment">// Output: true</span>
</code></pre>
<h2 id="heading-concat">concat()</h2>
<p>El método <code>concat()</code> se utiliza para fusionar dos o más arreglos en un solo arreglo. Este método no modifica los arreglos originales, sino que devuelve un nuevo arreglo que contiene los elementos de los arreglos originales.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>];
<span class="hljs-keyword">const</span> array2 = [<span class="hljs-string">'d'</span>, <span class="hljs-string">'e'</span>, <span class="hljs-string">'f'</span>];
<span class="hljs-keyword">const</span> array3 = [<span class="hljs-string">'g'</span>, <span class="hljs-string">'h'</span>, <span class="hljs-string">'i'</span>];

<span class="hljs-keyword">const</span> newArray = array1.concat(array2, array3);

<span class="hljs-built_in">console</span>.log(newArray);

<span class="hljs-comment">// Output: ["a", "b", "c", "d", "e", "f", "g", "h", "i"]</span>
</code></pre>
<h2 id="heading-slice">slice()</h2>
<p>El método <code>slice()</code> se utiliza para extraer una sección de un arreglo y devolver un nuevo arreglo con los elementos seleccionados. Este método no modifica el arreglo original.</p>
<p>El método <code>slice()</code> toma dos argumentos opcionales:</p>
<ol>
<li><p>El índice de inicio (incluido)</p>
</li>
<li><p>El índice de fin (excluido)</p>
</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> array1 = [<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>, <span class="hljs-string">'d'</span>, <span class="hljs-string">'e'</span>];

<span class="hljs-keyword">const</span> newArray = array1.slice(<span class="hljs-number">1</span>, <span class="hljs-number">4</span>);

<span class="hljs-built_in">console</span>.log(newArray);

<span class="hljs-comment">// Output: ["b", "c", "d"]</span>
</code></pre>
<p>Espero que esta guía te haya resultado útil y que lograste comprender los métodos de arreglos en JavaScript. Si tienes alguna pregunta o comentario, ¡no dudes en escribirme!</p>
<p>Si quieres profundizar en iteradores clave, te recomiendo el artículo</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://blog.devandmus.com/iteradores-clave-de-array-en-javascript">https://blog.devandmus.com/iteradores-clave-de-array-en-javascript</a></div>
<p> </p>
<h2 id="heading-fuentes">Fuentes</h2>
<ul>
<li><p><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">MDN Web Docs</a></p>
</li>
<li><p><a target="_blank" href="https://www.w3schools.com/jsref/jsref_obj_array.asp">W3Schools</a></p>
</li>
<li><p><a target="_blank" href="http://JavaScript.info">JavaScript.info</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Iteradores clave de Array en JavaScript: forEach(), map(), filter() y reduce()]]></title><description><![CDATA[En JavaScript, existen varios métodos de bucle para iterar sobre los elementos de un arreglo y realizar diferentes operaciones en ellos. A continuación, te presento los métodos más comunes: forEach(), map(), filter() y reduce().
forEach()
El método f...]]></description><link>https://blog.devandmus.com/iteradores-clave-de-array-en-javascript</link><guid isPermaLink="true">https://blog.devandmus.com/iteradores-clave-de-array-en-javascript</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[array methods]]></category><category><![CDATA[array]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[Node.js]]></category><dc:creator><![CDATA[Andrés Ignacio Maldonado]]></dc:creator><pubDate>Thu, 27 Jul 2023 00:23:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1690497027376/47359bb8-3c3a-4d86-9772-baaa4417a997.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>En JavaScript, existen varios métodos de bucle para iterar sobre los elementos de un arreglo y realizar diferentes operaciones en ellos. A continuación, te presento los métodos más comunes: <code>forEach()</code>, <code>map()</code>, <code>filter()</code> y <code>reduce()</code>.</p>
<h2 id="heading-foreach">forEach()</h2>
<p>El método <code>forEach()</code> itera sobre los elementos de un arreglo y llama a una función para cada elemento y, a diferencia de los que veremos más adelante, no devuelve un nuevo arreglo. La sintaxis es la siguiente:</p>
<pre><code class="lang-javascript">array.forEach(<span class="hljs-function">(<span class="hljs-params">currentValue, index, arr</span>) =&gt;</span> {
  <span class="hljs-comment">// código a ejecutar</span>
});
</code></pre>
<p>donde:</p>
<ul>
<li><p><code>currentValue</code>: El valor actual del elemento.</p>
</li>
<li><p><code>index</code>: El índice actual del elemento.</p>
</li>
<li><p><code>arr</code>: El arreglo que se está iterando.</p>
</li>
</ul>
<p>Aquí hay un ejemplo de cómo usar <code>forEach()</code> para imprimir cada elemento de un arreglo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> frutas = [<span class="hljs-string">"Manzana"</span>, <span class="hljs-string">"Banana"</span>, <span class="hljs-string">"Naranja"</span>];

frutas.forEach(<span class="hljs-function">(<span class="hljs-params">fruta</span>) =&gt;</span> {
  <span class="hljs-built_in">console</span>.log(fruta);
});
<span class="hljs-comment">// Manzana</span>
<span class="hljs-comment">// Banana</span>
<span class="hljs-comment">// Naranja</span>
</code></pre>
<h2 id="heading-map">map()</h2>
<p>El método <code>map()</code> itera sobre los elementos de un arreglo y devuelve un nuevo arreglo con los resultados de la función de retorno de llamada. La sintaxis es la siguiente:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> new_array = arr.map(<span class="hljs-function">(<span class="hljs-params">currentValue, index, arr</span>) =&gt;</span> {
  <span class="hljs-comment">// código a ejecutar</span>
});
</code></pre>
<p>donde:</p>
<ul>
<li><p><code>currentValue</code>: El valor actual del elemento.</p>
</li>
<li><p><code>index</code>: El índice actual del elemento.</p>
</li>
<li><p><code>arr</code>: El arreglo original.</p>
</li>
</ul>
<p>Aquí hay un ejemplo de cómo usar <code>map()</code> para duplicar los valores de un arreglo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numeros = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>];

<span class="hljs-keyword">const</span> doblados = numeros.map(<span class="hljs-function">(<span class="hljs-params">numero</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> numero * <span class="hljs-number">2</span>;
});

<span class="hljs-built_in">console</span>.log(doblados);
<span class="hljs-comment">// [2, 4, 6]</span>
</code></pre>
<h2 id="heading-filter">filter()</h2>
<p>El método <code>filter()</code> itera sobre los elementos de un arreglo y devuelve un nuevo arreglo que contiene sólo los elementos que pasan una función de prueba. La sintaxis es la siguiente:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> new_array = arr.filter(<span class="hljs-function">(<span class="hljs-params">currentValue, index, arr</span>) =&gt;</span> {
  <span class="hljs-comment">// código a ejecutar</span>
});
</code></pre>
<p>donde:</p>
<ul>
<li><p><code>currentValue</code>: El valor actual del elemento.</p>
</li>
<li><p><code>index</code>: El índice actual del elemento.</p>
</li>
<li><p><code>arr</code>: El arreglo original.</p>
</li>
</ul>
<p>Aquí hay un ejemplo de cómo usar <code>filter()</code> para obtener sólo los números pares de un arreglo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numeros = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>];

<span class="hljs-keyword">const</span> numerosPares = numeros.filter(<span class="hljs-function">(<span class="hljs-params">numero</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> numero % <span class="hljs-number">2</span> === <span class="hljs-number">0</span>;
});

<span class="hljs-built_in">console</span>.log(numerosPares);
<span class="hljs-comment">// [2, 4, 6];</span>
</code></pre>
<h2 id="heading-reduce">reduce()</h2>
<p>El método <code>reduce()</code> itera sobre los elementos de un arreglo y devuelve un único valor que resulta de la función de retorno de llamada. La sintaxis es la siguiente:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> result =
  arr.reduce(<span class="hljs-function">(<span class="hljs-params">accumulator, currentValue, index, arr</span>) =&gt;</span> {
    <span class="hljs-comment">// código a ejecutar</span>
  }, initialValue);
</code></pre>
<p>donde:</p>
<ul>
<li><p><code>accumulator</code>: El valor acumulado.</p>
</li>
<li><p><code>currentValue</code>: El valor actual del elemento.</p>
</li>
<li><p><code>index</code>: El índice actual del elemento.</p>
</li>
<li><p><code>arr</code>: El arreglo original.</p>
</li>
<li><p><code>initialValue</code> (opcional): El valor inicial del acumulador.</p>
</li>
</ul>
<p>Aquí hay un ejemplo de cómo usar <code>reduce()</code> para sumar los valores de un arreglo:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numeros = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];

<span class="hljs-keyword">const</span> suma = numeros.reduce(<span class="hljs-function">(<span class="hljs-params">acumulador, numero</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> acumulador + numero;
}, <span class="hljs-number">0</span>);

<span class="hljs-built_in">console</span>.log(suma);
<span class="hljs-comment">// 15</span>
</code></pre>
<p>Estos métodos son herramientas poderosas para iterar y operar con eficacia en arreglos. Recuerda que, a partir de ES6, se recomienda usar <code>const</code> en lugar de <code>var</code> para declarar variables que no cambiarán su valor. ¡Feliz programación!</p>
<hr />
<p>Fuentes:</p>
<ul>
<li><p><a target="_blank" href="http://w3schools.com">w3schools.com</a></p>
</li>
<li><p><a target="_blank" href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array">MDN Web Docs</a></p>
</li>
</ul>
<hr />
]]></content:encoded></item></channel></rss>