<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.javiercanadilla.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.javiercanadilla.com/" rel="alternate" type="text/html" /><updated>2026-08-27T10:00:22+00:00</updated><id>https://www.javiercanadilla.com/feed.xml</id><title type="html">Javier Cañadilla Casco</title><subtitle>Ingeniero de Software apasionado por la programación y enamorado de la tecnología. Arquitecto de software.
</subtitle><entry><title type="html">Forma elegante de extraer datos de un objeto o un array</title><link href="https://www.javiercanadilla.com/blog/programacion/javascript/destructuring" rel="alternate" type="text/html" title="Forma elegante de extraer datos de un objeto o un array" /><published>2022-05-06T00:00:00+00:00</published><updated>2022-05-06T00:00:00+00:00</updated><id>https://www.javiercanadilla.com/blog/programacion/javascript/destructuring</id><content type="html" xml:base="https://www.javiercanadilla.com/blog/programacion/javascript/destructuring"><![CDATA[<p>Si estás aquí para conocer la forma más elegante de extraer datos de un objeto o de un array muy atento porque te voy a presentar el <strong>Destructuring</strong>.</p>

<h3 id="destructuring">¿Destructuring?</h3>
<p>Pensarás que es una técnica muy difícil de entender y muy compleja de utilizar en el día a día. Pensarás que casi nunca lo llegarás a utilizar en una aplicación. O que tendrás que instalar una librería muy pesada en tu proyecto. Nada más lejos de la realidad. Es muy sencillo, muy útil y rápido de utilizar. Tanto que no necesitas instalar nada en tu aplicación porque forma parte del lenguaje.</p>

<h3 id="vale-te-creo-cómo-funciona">Vale, te creo. ¿Cómo funciona?</h3>
<p>El <strong>destructuring</strong> es una técnica que permite extraer datos de un objeto o de un array de forma muy elegante. Además, evitas poner <em>magic numbers</em> en el código para extraer posiciones concretas de un array, hasta cierto límite.</p>

<h3 id="destructuring-con-objetos">Destructuring con objetos</h3>
<p>Te pongo un ejemplo con un objeto:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">// Supongamos que buscamos un usuario en nuestra base de datos</span>
<span class="kd">const</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">findById</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span>

<span class="c1">// Y ahora del usuario, sólo nos interesa quedarnos con algunos datos</span>
<span class="c1">// En este caso, queremos quedarnos con el nombre, email y contraseña</span>
<span class="kd">const</span> <span class="p">{</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">email</span><span class="p">,</span> <span class="nx">password</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">user</span><span class="p">;</span>

<span class="c1">// ¿Sencillo no?</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">name</span><span class="p">);</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">email</span><span class="p">);</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">password</span><span class="p">);</span>

</code></pre></div></div>

<p>Como puedes ver en el ejemplo anterior, el <strong>destructuring</strong> utiliza la sintaxis de objeto <em>{</em> <em>}</em> para extraer los datos en nuevas variables. Así la variable <strong>name</strong> tendrá el valor del nombre del usuario, <strong>email</strong> el valor del email del usuario y <strong>password</strong> el valor de la contraseña del usuario.</p>

<p>También podemos acceder a objetos dentro de otro objeto:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">// Supongamos que buscamos un usuario en nuestra base de datos</span>
<span class="kd">const</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">findById</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span>

<span class="c1">// Y en este ejemplo queremos la dirección del usuario que, a su vez contiene, una dirección</span>
<span class="kd">const</span> <span class="p">{</span> <span class="na">address</span><span class="p">:</span> <span class="p">{</span> <span class="nx">street</span><span class="p">,</span> <span class="nx">city</span> <span class="p">}</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">user</span><span class="p">;</span>

<span class="c1">// ¿Sencillo no?</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">street</span><span class="p">);</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">city</span><span class="p">);</span>

</code></pre></div></div>

<p>En este caso, hay que tener más cuidado porque <em>address</em> puede ser <strong>undefined</strong> y eso provocaría un error al intentar acceder a una propiedad de un objeto que no está definido.</p>

<h3 id="destructuring-con-arrays">Destructuring con arrays</h3>
<p>Vale, también te dije que podíamos usar <strong>destructuring</strong> para extraer datos de un array de forma elegante. Vamos con el ejemplo:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">// En este caso, tenemos un array de usuarios que tenemos en la base de datos</span>
<span class="kd">const</span> <span class="nx">users</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">find</span><span class="p">();</span>

<span class="c1">// Queremos quedarnos con el primer usuario</span>
<span class="kd">const</span> <span class="p">[</span><span class="nx">user</span><span class="p">]</span> <span class="o">=</span> <span class="nx">users</span><span class="p">;</span>

</code></pre></div></div>

<p>Al poner el <strong>[user]</strong>, el <strong>destructuring</strong> extrae el primer usuario del array y lo guarda en la variable <strong>user</strong>.</p>

<p>Otro ejemplo para quedarnos con el segundo usuario:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="kd">const</span> <span class="nx">users</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">find</span><span class="p">();</span>

<span class="c1">// Queremos quedarnos con el segundo usuario</span>

<span class="c1">// FEO:</span>
<span class="kd">const</span> <span class="nx">user</span> <span class="o">=</span> <span class="nx">users</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>

<span class="c1">// ELEGANTE:</span>
<span class="kd">const</span> <span class="p">[,</span> <span class="nx">user</span><span class="p">]</span> <span class="o">=</span> <span class="nx">users</span><span class="p">;</span>

</code></pre></div></div>
<blockquote>
  <p>¡OJO! Hay que comprobar que el array no esté vacío y que contenga al menos los elementos que queremos extraer con el <strong>destructuring</strong>.</p>
</blockquote>

<p>Al poner la coma en el <strong>[, user]</strong>, el <strong>destructuring</strong> extrae el segundo usuario del array y lo guarda en la variable <strong>user</strong>.</p>

<p>Y por otro lado, ¿que pasa si queremos quedarnos con el <em>resto</em> de usuarios o de propiedades de un objeto? Con el resto me refiero a que quiero quitar una propiedad de un objeto o un array y quedarme con las demás. Vamos con ello.</p>

<h3 id="excluir-una-propiedad-de-un-objeto">Excluir una propiedad de un objeto</h3>
<p>Para excluir propiedades de un objeto hay que utilizar el operador <strong>spread</strong>. Muy probablemente dedique otro post para verlo pero de momento podemos ver unas pinceladas en este post.</p>

<p>Vamos con el ejemplo:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">// En nuestra base de datos tenemos un usuario con toda la información</span>
<span class="c1">// Sin embargo, no queremos devolver la contraseña (aunque esté encriptada). Para no exponer esta información.</span>

<span class="c1">// ¿Cómo podemos hacerlo?</span>
<span class="kd">const</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">findById</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span>

<span class="c1">// En este caso, queremos quedarnos con todo el usuario excepto la contraseña</span>
<span class="kd">const</span> <span class="p">{</span> <span class="nx">password</span><span class="p">,</span> <span class="p">...</span><span class="nx">partialUser</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">user</span><span class="p">;</span>

<span class="c1">// Y lo que devolveremos en la API será la variable: partialUser</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">partialUser</span><span class="p">);</span> <span class="c1">// Tendrá todo el usuario excepto la contraseña</span>

<span class="c1">// ¿Sencillo no?</span>

</code></pre></div></div>

<h3 id="excluir-un-elemento-de-un-array">Excluir un elemento de un array</h3>
<p>Para excluir un elemento de un array podemos utilizar <strong>destructuring</strong> con el operador <strong>spread</strong>. Pero, tiene algunas restricciones y es que sólo podemos quitar elementos desde el inicio. Veamos como:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">// En nuestra base de datos tenemos un array de usuarios con toda la información</span>
<span class="kd">const</span> <span class="nx">users</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">find</span><span class="p">();</span>

<span class="c1">// En este caso, queremos quedarnos con todos los usuarios excepto el primero</span>
<span class="kd">const</span> <span class="p">[</span><span class="nx">user</span><span class="p">,</span> <span class="p">...</span><span class="nx">otherUsers</span><span class="p">]</span> <span class="o">=</span> <span class="nx">users</span><span class="p">;</span>

<span class="c1">// Y lo que devolveremos en la API será la variable: otherUsers</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">otherUsers</span><span class="p">);</span> <span class="c1">// Tendrá todos los usuarios excepto el primero</span>

</code></pre></div></div>

<p>Lo que <strong>NO</strong> podemos hacer es quedarnos con el último usuario porque el <em>spread operator</em> no puede ponerse al principio del array, sólo puede ponerse al final.</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">// En nuestra base de datos tenemos un array de usuarios con toda la información</span>
<span class="kd">const</span> <span class="nx">users</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">User</span><span class="p">.</span><span class="nx">find</span><span class="p">();</span>

<span class="c1">// En este caso, queremos quedarnos con todos los usuarios excepto el último</span>
<span class="kd">const</span> <span class="p">[...</span><span class="nx">otherUsers</span><span class="p">,</span> <span class="nx">user</span><span class="p">]</span> <span class="o">=</span> <span class="nx">users</span><span class="p">;</span> <span class="c1">// ¡ERROR! Uncaught SyntaxError: Rest element must be last element</span>

</code></pre></div></div>

<p>Estoy seguro de que a partir de ahora no pararás de utilizar este método para extraer información de un objeto o para quedarte con el resto de elementos de un array.</p>

<p>¡Nos vemos programando!</p>]]></content><author><name></name></author><category term="programacion" /><category term="javascript" /><category term="JavaScript" /><category term="Typescript" /><category term="Destructuring" /><category term="PRO" /><summary type="html"><![CDATA[Buenas prácticas para extraer datos de un objeto o un array JavaScript o TypeScript.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.javiercanadilla.com/dos-pantallas-teclado.jpg" /><media:content medium="image" url="https://www.javiercanadilla.com/dos-pantallas-teclado.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Estas son las librerías más útiles de JavaScript / Typescript</title><link href="https://www.javiercanadilla.com/blog/programacion/javascript/dos-librerias-que-mas-utilizo" rel="alternate" type="text/html" title="Estas son las librerías más útiles de JavaScript / Typescript" /><published>2022-04-03T08:20:15+00:00</published><updated>2022-04-03T08:20:15+00:00</updated><id>https://www.javiercanadilla.com/blog/programacion/javascript/dos-librerias-que-mas-utilizo</id><content type="html" xml:base="https://www.javiercanadilla.com/blog/programacion/javascript/dos-librerias-que-mas-utilizo"><![CDATA[<p>Hoy en día, con el pleno desarrollo de la inteligencia artificial, el big-data, IoT y la utilización de tantos dispositivos móviles en el mundo, la cantidad de datos que se generan es inmensa. Y, es por esto que también las aplicaciones están creciendo en la cantidad de información que controlan en proyectos que tengan que ver con estos ámbitos y con muchos otros.</p>

<p>Así que aquí van las que para mí son las librerías más útiles que más utilizo y que, sin duda, deberías conocer para hacer frente a tantísima cantidad de datos. Con ellas podrás modificar, filtrar, ordenar, hacer cálculos, re-estructurar la información, etc.</p>

<h1 id="lodash">Lodash</h1>
<p><a href="https://lodash.com/">Lodash</a> es la librería por excelencia para el control y manejo de colecciones y arrays pero no solo eso. Lodash es mucho más. Tiene multitud de funciones, muy sencillas de utilizar, que sirven para hacer operaciones matemáticas, comparadores del lenguaje, operaciones con strings y muchas más utilidades. Si no la has utilizado nunca, estoy seguro de que te sorprenderá. Es cierto que muchas funcionalidades que aporta se encuentran nativas en el lenguaje de JavaScript pero aun así es una librería que te puede ayudar a hacer lo que quieras.</p>

<p>Comunmente se importa como <strong>_</strong> y así es muy fácil de identificar en toda la aplicación.</p>

<p>Aquí te dejo algunos ejemplos de uso de Lodash y te invito a que <strong>escribas en los comentarios</strong> cuál es la función de <strong>lodash</strong> que más útil te resulta:</p>

<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kd">const</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">lodash</span><span class="dl">'</span><span class="p">);</span>

<span class="kd">const</span> <span class="nx">zeroToTen</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> <span class="c1">// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
</span>
<span class="kd">const</span> <span class="nx">tenToZero</span> <span class="o">=</span> <span class="nx">_rangeRight</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> <span class="c1">// [ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ]
</span>

<span class="kd">const</span> <span class="nx">multipleOfTwo</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">zeroToTen</span><span class="p">,</span> <span class="nx">n</span> <span class="o">=&gt;</span> <span class="nx">n</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">===</span> <span class="mi">0</span><span class="p">);</span> <span class="c1">// [ 0, 2, 4, 6, 8 ]
</span>

<span class="kd">const</span> <span class="nx">player</span> <span class="o">=</span> <span class="p">{</span>
	<span class="na">name</span><span class="p">:</span> <span class="dl">'</span><span class="s1">John</span><span class="dl">'</span><span class="p">,</span>
	<span class="na">age</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span>
	<span class="na">isAlive</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
	<span class="na">email</span><span class="p">:</span> <span class="kc">undefined</span><span class="p">,</span>
	<span class="na">address</span><span class="p">:</span> <span class="p">{</span>
		<span class="na">street</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Main Street</span><span class="dl">'</span><span class="p">,</span>
		<span class="na">number</span><span class="p">:</span> <span class="mi">123</span><span class="p">,</span>
		<span class="na">city</span><span class="p">:</span> <span class="dl">'</span><span class="s1">New York</span><span class="dl">'</span><span class="p">,</span>
		<span class="na">country</span><span class="p">:</span> <span class="dl">'</span><span class="s1">USA</span><span class="dl">'</span>
	<span class="p">}</span>
<span class="p">}</span>

<span class="kd">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="nx">player</span><span class="p">,</span> <span class="dl">'</span><span class="s1">name</span><span class="dl">'</span><span class="p">);</span> <span class="c1">// John
</span>
<span class="kd">const</span> <span class="nx">street</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="nx">player</span><span class="p">,</span> <span class="dl">'</span><span class="s1">address.street</span><span class="dl">'</span><span class="p">);</span> <span class="c1">// Main Street
</span>
<span class="kd">const</span> <span class="nx">email</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="nx">player</span><span class="p">,</span> <span class="dl">'</span><span class="s1">email</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">no-email-provided</span><span class="dl">'</span><span class="p">);</span> <span class="c1">// no-email-provided</span></code></pre></figure>

<h1 id="bluebirdjs">Bluebird.js</h1>
<p>Otra gran librería que te puede ayudar a hacer frente a muchos datos y que te permite hacer operaciones asíncronas. De esta forma no tienes que esperar a que se complete una operación para continuar con otra. Bluebird también permite que operaciones <strong>síncronas</strong> como las anteriores que hemos visto en <strong>Lodash</strong> sean asíncronas. Y en los ejemplos te explicaré como hacerlo.</p>

<p><a href="http://bluebirdjs.com/">Bluebird</a> tiene una documentación un poco más complicada que la de lodash pero aún así es sencilla de entender y cuando hagas unos cuantos ejemplos te resultará algo muy práctico. Yo suelo importar el paquete como Bluebird y así es muy fácil de identificar en toda la aplicación.</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">Bluebird</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">bluebird</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">lodash</span><span class="dl">'</span><span class="p">);</span>

<span class="p">(</span><span class="k">async</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
	<span class="c1">// Esta función simplemente es para utilizar async/await</span>

	<span class="kd">const</span> <span class="nx">zeroToTen</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> <span class="c1">// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]</span>
	<span class="kd">const</span> <span class="nx">sum</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">Bluebird</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="nx">zeroToTen</span><span class="p">,</span> <span class="p">(</span><span class="nx">acc</span><span class="p">,</span> <span class="nx">n</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">acc</span> <span class="o">+</span> <span class="nx">n</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>

	<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">sum</span><span class="p">);</span> <span class="c1">// 45</span>
<span class="p">})();</span>
</code></pre></div></div>

<p>En el ejemplo anterior de Bluebird estoy utilizando la función <strong>reduce</strong> de Bluebird. Esta función nos permite recorrer el array anterior <em>zeroToTen</em> y además, aplicar una función a cada elemento del array. En este caso, la función recibe dos parámetros: el primer parámetro es el acumulador, el segundo es el elemento actual del array. En este caso, la función es la suma de los elementos del array.</p>

<p>En el siguiente ejemplo, te muestro como utilizarlo con un array de objetos:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">Bluebird</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">Bluebird</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">axios</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">axios</span><span class="dl">'</span><span class="p">);</span>

<span class="p">(</span><span class="k">async</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
	<span class="kd">const</span> <span class="nx">pokemonsResponse</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">axios</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="dl">'</span><span class="s1">https://pokeapi.co/api/v2/pokemon/</span><span class="dl">'</span><span class="p">);</span>
	<span class="kd">const</span> <span class="nx">pokemons</span> <span class="o">=</span> <span class="nx">pokemonsResponse</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">results</span><span class="p">;</span>

	<span class="kd">const</span> <span class="nx">mappedByName</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">Bluebird</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="nx">pokemons</span><span class="p">,</span> <span class="k">async</span> <span class="p">(</span><span class="nx">acc</span><span class="p">,</span> <span class="nx">pokemon</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
		
		<span class="c1">// Obtenemos la información de este pokemon</span>
		<span class="kd">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">axios</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="nx">pokemon</span><span class="p">.</span><span class="nx">url</span><span class="p">);</span>

		<span class="c1">// Obtenemos los campos que nos interesan del objeto pokemon</span>
		<span class="kd">const</span> <span class="p">{</span> <span class="nx">id</span><span class="p">,</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">weight</span><span class="p">,</span> <span class="nx">types</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">data</span><span class="p">;</span>

		<span class="k">return</span> <span class="p">{</span>
			<span class="c1">// Muy importante devolver el contenido del acumulador!</span>
			<span class="p">...</span><span class="nx">acc</span><span class="p">,</span>
			<span class="c1">// Agregamos el nuevo elemento al acumulador</span>
			<span class="p">[</span><span class="nx">name</span><span class="p">]:</span> <span class="p">{</span>
			 	<span class="nx">id</span><span class="p">,</span>
				<span class="nx">name</span><span class="p">,</span>
				<span class="nx">weight</span><span class="p">,</span>
				<span class="nx">types</span>
			<span class="p">}</span>
		<span class="p">};</span>
	<span class="p">},</span> <span class="p">{});</span>

	<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">mappedByName</span><span class="p">);</span>
<span class="p">})();</span>
</code></pre></div></div>

<p>Dime en los comentarios qué te han parecido estas dos librerías, si las conocías o no y cuales son las que librerías que más utilizas tu. Espero que te haya resultado interesante el post. Si ha sido así, compártelo con otros usuarios. Nos vemos en el siguiente post.</p>]]></content><author><name></name></author><category term="Programacion" /><category term="JavaScript" /><category term="JavaScript" /><category term="Typescript" /><category term="BigData" /><category term="IoT" /><summary type="html"><![CDATA[Las librerías más útiles de JavaScript / Typescript]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.javiercanadilla.com/lodash-bluebird.png" /><media:content medium="image" url="https://www.javiercanadilla.com/lodash-bluebird.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>