Ada*_*NYC 27 ruby sorting boolean ruby-on-rails
我知道Ruby中的boolean是类.但是从实际的角度来看,有没有办法通过布尔值对数组进行排序(即,首先使用所有具有真值的元素)?
谢谢.
Rya*_*igg 79
你可以作弊并让它返回一个数字:
sort_by { |a| a.thing ? 0 : 1 }
Run Code Online (Sandbox Code Playgroud)
小智 17
您可以使用分区然后展平结果:
partition{|v| v == true}.flatten
Run Code Online (Sandbox Code Playgroud)
Num*_*ers 10
通过使用ActiveRecord的顺序(包含在Rails中):
collection.order(thing: :desc)
Run Code Online (Sandbox Code Playgroud)
由于这里有几种不同的表示方式,我继续对它们进行基准测试,看看哪种最快,根据布尔属性对 27,000 个项目进行排序:
Rehearsal ---------------------------------------------
sort_by 0.070000 0.000000 0.070000 ( 0.075203)
partition 0.110000 0.000000 0.110000 ( 0.114667)
order 0.000000 0.000000 0.000000 ( 0.000046)
------------------------------------ total: 0.180000sec
user system total real
sort_by 0.010000 0.000000 0.010000 ( 0.016611)
partition 0.110000 0.000000 0.110000 ( 0.111384)
order 0.000000 0.000000 0.000000 ( 0.000047)
Run Code Online (Sandbox Code Playgroud)
所以,是的,将事情保留在 SQL 端肯定会让事情变得更快。