<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DAI</title>
    <description>The latest articles on DEV Community by DAI (@never_be_a_pm).</description>
    <link>https://dev.to/never_be_a_pm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1357292%2F6b7b4833-ac30-4b0b-b257-b8c4550af968.jpg</url>
      <title>DEV Community: DAI</title>
      <link>https://dev.to/never_be_a_pm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/never_be_a_pm"/>
    <language>en</language>
    <item>
      <title>sorting an array that contains nil in Ruby using sort_by</title>
      <dc:creator>DAI</dc:creator>
      <pubDate>Sat, 16 Mar 2024 11:18:45 +0000</pubDate>
      <link>https://dev.to/never_be_a_pm/sorting-an-array-that-contains-nil-in-ruby-using-sortby-19mc</link>
      <guid>https://dev.to/never_be_a_pm/sorting-an-array-that-contains-nil-in-ruby-using-sortby-19mc</guid>
      <description>&lt;p&gt;Hi, I'm CEO at &lt;a href="https://indieverse.jp"&gt;Indieverse&lt;/a&gt; and owner of &lt;a href="https://dividable.net"&gt;DAINOTE&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Premise
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;If there is an array like the following, trying to sort it can sometimes fail
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort_by&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;# -&amp;gt; ArgumentError: comparison of Integer with nil failed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;When nil is present, I want to consider the nil value and change it to the oldest value before sorting&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Treat nil as &lt;code&gt;Float::INFINITY&lt;/code&gt; (infinity)&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
ruby
arr = [1,2,3,4,5,nil,6,7,8]
arr.sort_by { |item| item.nil? ? Float::INFINITY : item }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
  </channel>
</rss>
