UNPKG

ds-algo-study

Version:

Just experimenting with publishing a package

31 lines (30 loc) 2.6 kB
<p>Flattens an array up to the specified depth.</p> <ul> <li>Use recursion, decrementing <code>depth</code> by 1 for each level of depth.</li> <li>Use <code>Array..reduce()</code> and <code>Array..concat()</code> to merge elements or arrays.</li> <li>Base case, for <code>depth</code> equal to <code>1</code> stops recursion.</li> <li>Omit the second argument, <code>depth</code> to flatten only to a depth of <code>1</code> (single flatten).</li> </ul> <div id=">pre data-role=" codeBlock" data-info="js" class="language-javascript"> <code><a title="1"><span >function</span> <span >flatten</span>(arr<span >,</span> depth <span >=</span> <span >1</span>) <span >{</span></a> <a title="2"> <span >return</span> <span >arr</span>.<span >reduce</span>((newArr<span >,</span> curEle) <span >=&gt;</span> <span >{</span></a> <a title="3"> <span >if</span> (depth <span >&gt;</span> <span >1</span> <span >&amp;&amp;</span> <span >Array</span>.<span >isArray</span>(curEle)) <span >{</span></a> <a title="4"> <span >return</span> <span >newArr</span>.<span >concat</span>(<span >flatten</span>(curEle<span >,</span> depth <span >-</span> <span >1</span>))<span >;</span></a> <a title="5"> <span >}</span> <span >else</span> <span >{</span></a> <a id=-6" title="6"> <span >return</span> <span >newArr</span>.<span >concat</span>(curEle)<span >;</span></a> <a title="7"> <span >}</span></a> <a title="8"> <span >},</span> [])<span >;</span></a> <a title="9"><span >}</span></a> <a id=-10" title="10"><span>console</span>.<span>log</span>(<span>&quot;flatten([1, [2], 3, 4], 3): &quot;,</span> <span>flatten</span>([<span>1,</span> [<span>2</span>]<span>,</span> <span>3,</span> <span>4</span>]<span>,</span> <span>3</span>))<span>;</span></a></code> </pre> </div> <div id=">pre data-role=" codeBlock" data-info="js" class="language-javascript"> <code><a title="1"><span >flatten</span>([<span >1,</span> <span >&quot;a&quot;,</span> [<span >&quot;hello&quot;,</span> [<span >&quot;world&quot;,</span> <span >&quot;1&quot;</span>]]])</a> <a id=-2" title="2"><span >flatten</span>([<span >1,</span> [<span >2</span>]<span >,</span> <span >3,</span> <span >4</span>])<span >;</span> <span >// [1, 2, 3, 4]</span></a> <a id=-3" title="3"><span>flatten</span>([<span>1,</span> [<span>2,</span> [<span>3,</span> [<span>4,</span> <span>5</span>]<span>,</span> <span>6</span>]<span>,</span> <span>7</span>]<span>,</span> <span>8</span>]<span>,</span> <span>2</span>)<span>;</span> <span>// [1, 2, 3, [4, 5], 6, 7, 8]</span></a></code> </pre> </div>