{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/tricky-use-case-of-array-map-in-js","result":{"data":{"markdownRemark":{"id":"a67cfa06-a36b-5699-89e6-77a33ac9bed5","html":"<p>If you are familiar with <a href=\"https://en.wikipedia.org/wiki/Functional_programming\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">functional programming</a>, <strong>Array.prototype.map</strong> must be a <strong>function</strong> that you work with every day.</p>\n<p>For me, <strong>map()</strong> is a powerful function, but there might be some tricky use case of it that you don’t know about!</p>\n<p>Let’s walk through some basic knowledge</p>\n<blockquote>\n<p>The <strong>map()</strong> method creates a new array from the calling array by applying a provided <strong>callback function</strong> once for each element of the calling array</p>\n</blockquote>\n<h2 id=\"simple-use-cases\" style=\"position:relative;\"><a href=\"#simple-use-cases\" aria-label=\"simple use cases permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Simple use cases</h2>\n<p>Giving this array</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> devs <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n\t<span class=\"token punctuation\">{</span> id<span class=\"token operator\">:</span> <span class=\"token string\">\"1\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"Leo\"</span><span class=\"token punctuation\">,</span> yob<span class=\"token operator\">:</span> <span class=\"token number\">1995</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token punctuation\">{</span> id<span class=\"token operator\">:</span> <span class=\"token string\">\"2\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"Paul\"</span><span class=\"token punctuation\">,</span> yob<span class=\"token operator\">:</span> <span class=\"token number\">1995</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token punctuation\">{</span> id<span class=\"token operator\">:</span> <span class=\"token string\">\"3\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"Jesse\"</span><span class=\"token punctuation\">,</span> yob<span class=\"token operator\">:</span> <span class=\"token number\">1996</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token punctuation\">{</span> id<span class=\"token operator\">:</span> <span class=\"token string\">\"4\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"Ken\"</span><span class=\"token punctuation\">,</span> yob<span class=\"token operator\">:</span> <span class=\"token number\">1997</span> <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>What can we do using <strong>map()</strong> function:</p>\n<ul>\n<li>Getting new values from array</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> ages <span class=\"token operator\">=</span> devs<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">dev</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">const</span> currentYear <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Date</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getFullYear</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">return</span> currentYear <span class=\"token operator\">-</span> dev<span class=\"token punctuation\">.</span>yob\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>ages<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => [25, 25, 24, 23]</span></code></pre></div>\n<ul>\n<li>Extracting values from array of objects</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> names <span class=\"token operator\">=</span> devs<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">dev</span> <span class=\"token operator\">=></span> dev<span class=\"token punctuation\">.</span>name<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>names<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => [\"Leo\", \"Paul\", \"Jesse\", \"Ken\"]</span></code></pre></div>\n<ul>\n<li>Rendering list in React application</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token function-variable function\">DeveloperProfiles</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> devs <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ul</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n\t\t\t</span><span class=\"token punctuation\">{</span>\n\t\t\t\tdevs<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">dev</span> <span class=\"token operator\">=></span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span> <span class=\"token attr-name\">key</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>dev<span class=\"token punctuation\">.</span>id<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>dev<span class=\"token punctuation\">.</span>name<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">)</span>\n\t\t\t<span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n\t\t</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ul</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"tricky-use-case\" style=\"position:relative;\"><a href=\"#tricky-use-case\" aria-label=\"tricky use case permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Tricky use case</h2>\n<p>It is common to pass the pre-defined <strong>callback</strong> function as <strong>map()</strong> argument like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> <span class=\"token function-variable function\">extractId</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">dev</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">return</span> dev<span class=\"token punctuation\">.</span>id\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> ids <span class=\"token operator\">=</span> devs<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>extractId<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>ids<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => [\"1\", \"2\", \"3\", \"4\"]</span></code></pre></div>\n<p>But this habit may lead to unexpected behaviors with <strong>functions</strong> that take additional <strong>arguments</strong>.</p>\n<p>Consider this case - we need to get all <strong>ids</strong> as <strong>numbers</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token comment\">// ids = [\"1\", \"2\", \"3\", \"4\"]</span>\n<span class=\"token keyword\">const</span> idsInNumber <span class=\"token operator\">=</span> ids<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>parseInt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>idsInNumber<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => ???</span></code></pre></div>\n<p>You might expect the result is <code class=\"language-text\">[1, 2, 3, 4]</code>, but the actual result is <code class=\"language-text\">[1, NaN, NaN, NaN]</code> 😮😮</p>\n<p>We encountered this problem at <a href=\"https://coccoc.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Cốc Cốc</a> recently, it took me a while to figure out, and here’s the answer…</p>\n<p>Usually, we use <strong>map()</strong> callback with 1 <strong>argument</strong> (the element being traversed), but <strong>Array.prototype.map</strong> passes 3 arguments:</p>\n<ul>\n<li>the <strong>element</strong></li>\n<li>the <strong>index</strong></li>\n<li>the <strong>calling array</strong> (which we don’t use most of the time)</li>\n</ul>\n<p>And the callback in this case - <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">parseInt</a> is often used with 1 <strong>argument</strong> but it takes 2:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token comment\">// Syntax</span>\n<span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span>string <span class=\"token punctuation\">[</span><span class=\"token punctuation\">,</span> radix<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<ul>\n<li><code class=\"language-text\">string</code>: the value to parse</li>\n<li><code class=\"language-text\">radix</code> <strong>[Optional]</strong>: an integer that represent the <strong>radix</strong> (the base in mathematical numeral systems) - usually, it’s <strong>10</strong></li>\n</ul>\n<p>For example:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"10\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => 10</span>\n<span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"10\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => 10</span>\n<span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"10\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => 2</span>\n<span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"10\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => 4</span></code></pre></div>\n<p>And here you can see the source of confusion 👀!</p>\n<p>The third <strong>argument</strong> of <strong>map()</strong> is ignored by <strong>parseInt</strong> - but <strong><em>not</em></strong> the second one!</p>\n<p>Hence, the <strong>iteration</strong> steps of <strong>map()</strong> look like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token comment\">// map(parseInt) => map(parseInt(value, index))</span>\n\n<span class=\"token comment\">/* index is 0 */</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => 1</span>\n<span class=\"token comment\">/* index is 1 */</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"2\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => NaN</span>\n<span class=\"token comment\">/* index is 2 */</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"3\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => NaN</span>\n<span class=\"token comment\">/* index is 3 */</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"4\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// => NaN</span></code></pre></div>\n<h2 id=\"solution\" style=\"position:relative;\"><a href=\"#solution\" aria-label=\"solution permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Solution</h2>\n<p>As you’ve known the source of the problem, the solution is not to pass all of the <strong>map()</strong>’s arguments to your <strong>callback</strong> if you’re not sure how it works</p>\n<ul>\n<li>Passing only the arguments that your callback needs</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">function</span> <span class=\"token function\">returnInt</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">element</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span>element<span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token punctuation\">[</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"2\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"3\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"4\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>returnInt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// => [1, 2, 3, 4]</span>\n\n<span class=\"token comment\">// Same as above, but using the concise arrow function syntax</span>\n<span class=\"token comment\">// Better use this if you don't need to re-use the callback</span>\n<span class=\"token punctuation\">[</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"2\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"3\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"4\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">numb</span> <span class=\"token operator\">=></span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span>numb<span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// => [1, 2, 3, 4]</span></code></pre></div>\n<ul>\n<li>A simpler way to achieve our case like <a href=\"https://github.com/airbnb/javascript#coercion--numbers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Airbnb style guide</a></li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token punctuation\">[</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"2\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"3\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"4\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>Number<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// => [1, 2, 3, 4]</span></code></pre></div>\n<p>And that’s what I know about <strong>Array.prototype.map</strong> function, feel free to share your use case in the comment section 👇</p>\n<p>Happy coding!</p>\n<h2 id=\"references\" style=\"position:relative;\"><a href=\"#references\" aria-label=\"references permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>References</h2>\n<ul>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Array.prototype.map</a></li>\n<li><a href=\"https://github.com/denysdovhan/wtfjs#parseint-is-a-bad-guy\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><strong>parseInt</strong> is a bad guy</a></li>\n<li><a href=\"http://www.wirfs-brock.com/allen/posts/166\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">A JavaScript Optional Argument Hazard</a></li>\n<li><a href=\"https://codesource.io/use-cases-of-array-map-you-should-know\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://codesource.io/use-cases-of-array-map-you-should-know</a></li>\n<li><a href=\"https://github.com/airbnb/javascript#coercion--numbers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://github.com/airbnb/javascript#coercion—numbers</a></li>\n</ul>","fields":{"slug":"/posts/tricky-use-case-of-array-map-in-js","tagSlugs":["/tag/javascript/","/tag/array/","/tag/map/","/tag/functional-programming/","/tag/use-cases/"]},"frontmatter":{"date":"2020-09-21T22:12:03.284Z","description":"If you are familiar with functional programming, Array.prototype.map must be a function that you work with every day. We encountered a tricky use case of it at Cốc Cốc recently, it took me a while to figure out, and here's the answer...","tags":["javascript","array","map","functional-programming","use-cases"],"title":"Tricky use case of Array.prototype.map in JS","socialImage":"/media/header-book-n-coffee.jpg","headerImage":"/media/header-book-n-coffee.jpg"},"timeToRead":4}},"pageContext":{"slug":"/posts/tricky-use-case-of-array-map-in-js"}}}