<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Elliot Sachs</title><link>https://www.elliotsachs.com/posts/</link><description>Recent content in Posts on Elliot Sachs</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Copyright © 2026 Elliot Sachs</copyright><lastBuildDate>Tue, 16 Jun 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://www.elliotsachs.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>How to limit the number of stories returned by the Hacker News API</title><link>https://www.elliotsachs.com/how-to-limit-the-number-of-stories-returned-by-the-hacker-news-api/</link><pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.elliotsachs.com/how-to-limit-the-number-of-stories-returned-by-the-hacker-news-api/</guid><description>&lt;p&gt;Playing around with the Hacker News API and noticed that it&amp;rsquo;s returning hundreds of story IDs when queried. It&amp;rsquo;s not ideal and can take longer to resolve. Since the Hacker News API is handled by Firebase we can use the &lt;code&gt;limitToFirst&lt;/code&gt; or &lt;code&gt;limitToLast&lt;/code&gt; query params to only return a set number of the first or last stories.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what the top stories query would look like to return the first 10:&lt;/p&gt;</description></item><item><title>How To Tell Hugo To Open Links In New Tab</title><link>https://www.elliotsachs.com/how-to-tell-hugo-to-open-links-in-new-tab/</link><pubDate>Sat, 06 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.elliotsachs.com/how-to-tell-hugo-to-open-links-in-new-tab/</guid><description>&lt;p&gt;Took too long to fix this one. To open links in new tabs using Hugo&amp;rsquo;s Goldmark renderer, do the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create this file &lt;code&gt;layouts/_default/_markup/render-link.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add this in the file:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;{{ .Destination | safeURL }}&amp;#34;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;with&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;.&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Title&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;}}&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;{{ . }}&amp;#34;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;}}{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;.&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;HasPrefix&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;.&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Destination&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;http&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;}}&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;target&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;}}&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{ .Text }}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And you&amp;rsquo;re done.&lt;/p&gt;</description></item><item><title>How To Migrate Your Ghost Blog To Zeit's Now</title><link>https://www.elliotsachs.com/how-to-migrate-your-ghost-blog-to-zeits-now/</link><pubDate>Mon, 01 Jun 2020 21:47:52 -0700</pubDate><guid>https://www.elliotsachs.com/how-to-migrate-your-ghost-blog-to-zeits-now/</guid><description>&lt;p&gt;I recently moved my site from Digital Ocean to Now and wanted to share some of the steps I took. The process isn&amp;rsquo;t overly complicated but I ended up making a few mistakes that made the process a bit harder than I thought it would be.&lt;/p&gt;
&lt;p&gt;This assumes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You already have the now-cli installed&lt;/li&gt;
&lt;li&gt;You have node and npm installed&lt;/li&gt;
&lt;li&gt;You are familiar with using CLI tools&lt;/li&gt;
&lt;li&gt;Your domain is managed by Zeit.World&amp;rsquo;s DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Export your content using either the Ghost Admin Dashboard or the Ghost-CLI. I used the dashboard because it was pretty straightforward, go to Labs &amp;gt; Export your content. This will output a JSON file with your settings, users, pages, tags and post data and meta data (published dates, etc.). Do keep in mind that it does not include any images you may have uploaded directly. If that&amp;rsquo;s the case you&amp;rsquo;ll also want to download your images folder located in the content folder (and any other folder that might contain information you want to keep e.g., logs, themes, etc.).&lt;/p&gt;</description></item><item><title>The Comma Operator in JavaScript</title><link>https://www.elliotsachs.com/the-comma-operator-in-javascript/</link><pubDate>Thu, 12 Jul 2018 14:24:00 +0000</pubDate><guid>https://www.elliotsachs.com/the-comma-operator-in-javascript/</guid><description>&lt;p&gt;The comma operator takes two expressions, evaluates both and then returns the evaluation of the right expression. For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;returnLeft&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;) =&amp;gt; (&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;returnLeft&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;); &lt;span style="color:#75715e"&gt;// 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s important to keep in mind that both expressions will be evaluated, meaning that you have to be aware of the possible side-effects of the first expression passed.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;log&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;) =&amp;gt; &lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;`The value of y is &lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;returnLeft&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// The value of y is 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Find duplicate integer in time O(n logn) and space O(n)</title><link>https://www.elliotsachs.com/find-duplicate-integer-in-time-on-logn-and-space-on/</link><pubDate>Sat, 02 Jun 2018 21:46:22 +0000</pubDate><guid>https://www.elliotsachs.com/find-duplicate-integer-in-time-on-logn-and-space-on/</guid><description>&lt;p&gt;Here&amp;rsquo;s how you can find a duplicate integer in a list of integers (read array) in space O(n) and time O(nlogn). This will only return the first duplicate integer in the array.&lt;/p&gt;
&lt;p&gt;Note: This only applies for a list of integers 1..n. This won&amp;rsquo;t work otherwise.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findDuplicate&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ceiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;length&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ceiling&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;midpoint&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Math.&lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;ceiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt;) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeFloor&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeCeiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;midpoint&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;upperRangeFloor&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;midpoint&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;upperRangeCeiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ceiling&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;distinctPossibleIntegersInLowerRange&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeCeiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeFloor&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;itemsInLowerRange&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;forEach&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;item&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;item&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeFloor&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;item&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeCeiling&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;itemsInLowerRange&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;itemsInLowerRange&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;distinctPossibleIntegersInLowerRange&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeFloor&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;ceiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowerRangeCeiling&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;upperRangeFloor&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;ceiling&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;upperRangeCeiling&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;floor&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Example use case
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;findDuplicate&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;)); &lt;span style="color:#75715e"&gt;// 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How To Get Rid Of Duplicate Objects In An Array</title><link>https://www.elliotsachs.com/how-to-get-rid-of-duplicate-objects-in-an-array/</link><pubDate>Mon, 07 May 2018 14:58:41 +0000</pubDate><guid>https://www.elliotsachs.com/how-to-get-rid-of-duplicate-objects-in-an-array/</guid><description>&lt;p&gt;There might be a better way to do this, but I found it to be a pretty straightforward method.&lt;/p&gt;
&lt;p&gt;If you have an array of objects where some objects are duplicates, you can create a Set based on the property you want to use as a filter and then you can use the filter method over the original array, to only return the object if the property in question is still in the Set. If there&amp;rsquo;s a match, you want to make sure to remove that property from the Set so the duplicated Object doesn&amp;rsquo;t match with anything in the Set.&lt;/p&gt;</description></item><item><title>How To Create A Singly Linked List In JavaScript</title><link>https://www.elliotsachs.com/how-to-create-a-singly-linked-list-in-javascript/</link><pubDate>Sat, 25 Nov 2017 16:50:24 +0000</pubDate><guid>https://www.elliotsachs.com/how-to-create-a-singly-linked-list-in-javascript/</guid><description>&lt;p&gt;Linked Lists are relatively common and simple data structures that allow us to &amp;rsquo;link&amp;rsquo;/chain data together. Linked Lists are useful for insertion/deletion (time complexity of &lt;code&gt;O(1)&lt;/code&gt;), but are unfortunately not incredibly efficient when it comes to access and search (time complexity of &lt;code&gt;O(n)&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;The core idea behind a linked list is that you have nodes that contain two pieces of information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The data itself&lt;/li&gt;
&lt;li&gt;A pointer towards the next piece of data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The pointer is what chains the pieces of data together and creates the linked list.&lt;/p&gt;</description></item><item><title>List of Falsy Values in JavaScript &amp; ToBoolean Algorithm</title><link>https://www.elliotsachs.com/list-of-falsy-values-in-javascript-toboolean-algorithm/</link><pubDate>Sat, 18 Nov 2017 14:51:43 +0000</pubDate><guid>https://www.elliotsachs.com/list-of-falsy-values-in-javascript-toboolean-algorithm/</guid><description>&lt;p&gt;Here&amp;rsquo;s a no frills post about the falsy values in JS. In case you didn&amp;rsquo;t know, JavaScript considers some values as truthy and other as falsy. Most are deemed truthy so it&amp;rsquo;s a lot easier to simply remember the falsy ones.&lt;/p&gt;
&lt;p&gt;You can see the truthy vs falsy evaluation in action when using an if statement. The statement takes in an expression and coerces it to a boolean value using the ToBoolean algorithm. The result is predictable and outlined in the table provided by the ECMAScript spec. Here it is below:
Argument TypeResultCompletion RecordIf argument is an abrupt completion, return argument. Otherwise return ToBoolean(argument.[[value]]).UndefinedReturn false.NullReturn false.BooleanReturn argument.NumberReturn false if argument is +0, −0, or NaN; otherwise return true.StringReturn false if argument is the empty String (its length is zero); otherwise return true.SymbolReturn true.ObjectReturn true.
So just to recap, the falsy values are:&lt;/p&gt;</description></item></channel></rss>