|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | + <meta charset="UTF-8"> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | + <title>Document</title> |
| 7 | +<link rel="stylesheet" href="https://gist.githubusercontent.com/bgoonz/37bca66ce8441c688900b6f082f10560/raw/2e9a5966431d89b8ce6355e7b8039ba42554978b/CSS-Styling-for-Pandoc-generated-html.css"> |
| 8 | +<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> |
| 9 | +<link rel="stylesheet" href="https://raw.githubusercontent.com/bgoonz/styling-templates/master/bootstrap3/assets/css/bootstrap.min.css"> |
| 10 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js" integrity="sha512-YBk7HhgDZvBxmtOfUdvX0z8IH2d10Hp3aEygaMNhtF8fSOvBZ16D/1bXZTJV6ndk/L/DlXxYStP8jrF77v2MIg==" crossorigin="anonymous"></script> |
| 11 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-css.min.js" integrity="sha512-1qYok2x2Rsm2y+mrdyrp00iH7xYSgVyIQ1egDAoT7CBZ3kSzlaJK+NhWAh746NeL3gnH6dnP8FGS+3xOdwO7ig==" crossorigin="anonymous"></script> |
| 12 | +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css" integrity="sha512-tN7Ec6zAFaVSG3TpNAKtk4DOHNpSwKHxxrsiw4GHKESGPs5njn/0sMCUMl2svV4wo4BK/rCP7juYz+zx+l6oeQ==" crossorigin="anonymous" /> |
| 13 | + |
| 14 | +</head> |
| 15 | +<body>; |
| 16 | +<p>Converts an array of objects to a comma-separated values (CSV) string that contains only the <code>columns</code> specified.</p> |
| 17 | +<ul> |
| 18 | +<li>Use <code>Array.prototype.join(delimiter)</code> to combine all the names in <code>columns</code> to create the first row.</li> |
| 19 | +<li>Use <code>Array.prototype.map()</code> and <code>Array.prototype.reduce()</code> to create a row for each object, substituting non-existent values with empty strings and only mapping values in <code>columns</code>.</li> |
| 20 | +<li>Use <code>Array.prototype.join('\n')</code> to combine all rows into a string.</li> |
| 21 | +<li>Omit the third argument, <code>delimiter</code>, to use a default delimiter of <code>,</code>.</li> |
| 22 | +</ul> |
| 23 | +<div class="sourceCode" id="cb1"><pre class="sourceCode js"><code class="language-js sourceCode javascript"><a class="sourceLine" id="cb1-1" title="1"><span class="kw">const</span> JSONtoCSV <span class="op">=</span> (arr<span class="op">,</span> columns<span class="op">,</span> delimiter <span class="op">=</span> <span class="st">','</span>) <span class="kw">=></span></a> |
| 24 | +<a class="sourceLine" id="cb1-2" title="2"> [</a> |
| 25 | +<a class="sourceLine" id="cb1-3" title="3"> <span class="va">columns</span>.<span class="at">join</span>(delimiter)<span class="op">,</span></a> |
| 26 | +<a class="sourceLine" id="cb1-4" title="4"> ...<span class="va">arr</span>.<span class="at">map</span>(obj <span class="kw">=></span></a> |
| 27 | +<a class="sourceLine" id="cb1-5" title="5"> <span class="va">columns</span>.<span class="at">reduce</span>(</a> |
| 28 | +<a class="sourceLine" id="cb1-6" title="6"> (acc<span class="op">,</span> key) <span class="kw">=></span></a> |
| 29 | +<a class="sourceLine" id="cb1-7" title="7"> <span class="vs">`</span><span class="sc">${</span>acc<span class="sc">}${</span><span class="op">!</span><span class="va">acc</span>.<span class="at">length</span> <span class="op">?</span> <span class="st">''</span> : delimiter<span class="sc">}</span><span class="vs">"</span><span class="sc">${</span><span class="op">!</span>obj[key] <span class="op">?</span> <span class="st">''</span> : obj[key]<span class="sc">}</span><span class="vs">"`</span><span class="op">,</span></a> |
| 30 | +<a class="sourceLine" id="cb1-8" title="8"> <span class="st">''</span></a> |
| 31 | +<a class="sourceLine" id="cb1-9" title="9"> )</a> |
| 32 | +<a class="sourceLine" id="cb1-10" title="10"> )<span class="op">,</span></a> |
| 33 | +<a class="sourceLine" id="cb1-11" title="11"> ].<span class="at">join</span>(<span class="st">'</span><span class="sc">\n</span><span class="st">'</span>)<span class="op">;</span></a></code></pre></div> |
| 34 | +<div class="sourceCode" id="cb2"><pre class="sourceCode js"><code class="language-js sourceCode javascript"><a class="sourceLine" id="cb2-1" title="1"><span class="at">JSONtoCSV</span>(</a> |
| 35 | +<a class="sourceLine" id="cb2-2" title="2"> [<span class="op">{</span> <span class="dt">a</span><span class="op">:</span> <span class="dv">1</span><span class="op">,</span> <span class="dt">b</span><span class="op">:</span> <span class="dv">2</span> <span class="op">},</span> <span class="op">{</span> <span class="dt">a</span><span class="op">:</span> <span class="dv">3</span><span class="op">,</span> <span class="dt">b</span><span class="op">:</span> <span class="dv">4</span><span class="op">,</span> <span class="dt">c</span><span class="op">:</span> <span class="dv">5</span> <span class="op">},</span> <span class="op">{</span> <span class="dt">a</span><span class="op">:</span> <span class="dv">6</span> <span class="op">},</span> <span class="op">{</span> <span class="dt">b</span><span class="op">:</span> <span class="dv">7</span> <span class="op">}</span>]<span class="op">,</span></a> |
| 36 | +<a class="sourceLine" id="cb2-3" title="3"> [<span class="st">'a'</span><span class="op">,</span> <span class="st">'b'</span>]</a> |
| 37 | +<a class="sourceLine" id="cb2-4" title="4">)<span class="op">;</span> <span class="co">// 'a,b\n"1","2"\n"3","4"\n"6",""\n"","7"'</span></a> |
| 38 | +<a class="sourceLine" id="cb2-5" title="5"><span class="at">JSONtoCSV</span>(</a> |
| 39 | +<a class="sourceLine" id="cb2-6" title="6"> [<span class="op">{</span> <span class="dt">a</span><span class="op">:</span> <span class="dv">1</span><span class="op">,</span> <span class="dt">b</span><span class="op">:</span> <span class="dv">2</span> <span class="op">},</span> <span class="op">{</span> <span class="dt">a</span><span class="op">:</span> <span class="dv">3</span><span class="op">,</span> <span class="dt">b</span><span class="op">:</span> <span class="dv">4</span><span class="op">,</span> <span class="dt">c</span><span class="op">:</span> <span class="dv">5</span> <span class="op">},</span> <span class="op">{</span> <span class="dt">a</span><span class="op">:</span> <span class="dv">6</span> <span class="op">},</span> <span class="op">{</span> <span class="dt">b</span><span class="op">:</span> <span class="dv">7</span> <span class="op">}</span>]<span class="op">,</span></a> |
| 40 | +<a class="sourceLine" id="cb2-7" title="7"> [<span class="st">'a'</span><span class="op">,</span> <span class="st">'b'</span>]<span class="op">,</span></a> |
| 41 | +<a class="sourceLine" id="cb2-8" title="8"> <span class="st">';'</span></a> |
| 42 | +<a class="sourceLine" id="cb2-9" title="9">)<span class="op">;</span> <span class="co">// 'a;b\n"1";"2"\n"3";"4"\n"6";""\n"";"7"'</span></a></code></pre></div> |
| 43 | +</body></html> |
0 commit comments