Thank you Rob, I appreciate your help, good explanation. On Thu, Apr 26, 2018 at 5:02 PM, Rob Biedenharn <rob.biedenh...@gmail.com> wrote:
> > > On 2018-Apr-26, at 13:47 , Abdel Latif <mlotfi2...@gmail.com> wrote: > > But [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] has non numerical > values too. > > On Thursday, April 26, 2018 at 1:05:53 PM UTC-4, Walter Lee Davis wrote: >> >> >> > On Apr 26, 2018, at 12:12 PM, Abdel Latif <mlotf...@gmail.com> wrote: >> > >> > Hi, >> > >> > I found this code for sorting an array : >> > >> > p ["AB_1020", "AB_950", "AB_50", "1000", "570"].partition{|x| >> x.to_i.zero? } >> > .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse} >> > > You're missing that String#[] when given a Regexp returns the substring > that matches that Regexp. > > [1] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]} > => ["1020", "950", "50"] > [2] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]}.sort > => ["1020", "50", "950"] > [3] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/ > ]}.sort.reverse > => ["950", "50", "1020"] > [4] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/ > ].to_i}.sort.reverse > => [1020, 950, 50] > [5] pry(main)> ["AB_1020", "AB_950", "AB_50",].sort_by {|x| x[/\d+/].to_i} > => ["AB_50", "AB_950", "AB_1020"] > > -Rob > > > ouptut >> > >> > #⇒ ["AB_50", "AB_950", "AB_1020", "570", "1000"] >> > >> > >> > I know that .partition{|x| x.to_i.zero? } will create an array of >> arrays : >> > [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] >> > >> > >> > But this part .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse} >> >> flat_map: https://apidock.com/ruby/Enumerable/flat_map >> >> Then that passes a block, which acts on each member of the Enumerable >> that called flat_map. That block sorts by the numerical value of x, then >> reverses. >> >> Does that help? >> >> Walter >> >> > >> > I could understand it. >> > >> > Thanks. >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups "Ruby on Rails: Talk" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an email to rubyonrails-ta...@googlegroups.com. >> > To post to this group, send email to rubyonra...@googlegroups.com. >> > To view this discussion on the web visit https://groups.google.com/d/ms >> gid/rubyonrails-talk/c8e2dc7d-8501-4df3-b19c-917ebded457f% >> 40googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. >> >> > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-talk+unsubscr...@googlegroups.com. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/rubyonrails-talk/f6fa4cc4-37b2-4828-ba1c- > f9ac0d780221%40googlegroups.com > <https://groups.google.com/d/msgid/rubyonrails-talk/f6fa4cc4-37b2-4828-ba1c-f9ac0d780221%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "Ruby on Rails: Talk" group. > To unsubscribe from this topic, visit https://groups.google.com/d/ > topic/rubyonrails-talk/C3hSRwet4tY/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > rubyonrails-talk+unsubscr...@googlegroups.com. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/rubyonrails-talk/F584BA16-90B8-40DD-8C04-A92CBF336241%40gmail.com > <https://groups.google.com/d/msgid/rubyonrails-talk/F584BA16-90B8-40DD-8C04-A92CBF336241%40gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAPzaUfPOPEdR-WOqX%3D_ugk%2BjB1BDRtgv3i20z1Xfji9LiDKuUw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.