Rad*_*dek 4 ruby arrays sorting
我有代码按我想要的方式排序.由多个领域.凉.但现在我意识到有时元素可能是零.
Q1:任何想法如何设法在搜索的顶部获得零值?并摆脱此错误消息:in "<=>": undefined method "<=>" for nil:NilClass (NoMethodError)
Q2:在下面的代码中我按3个元素排序可以通过e [2]以某种方式定义asc,按e [0]和asc按e [1].我正在排序csv文件,大多数字段将是文本字段.
array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,''], [1,3,'a'], [2,1,'']] #doesnt work
array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,'b'], [1,3,'a'], [2,1,'b']] # works
array_of_arrays.each {|line| p line }
puts
array_of_arrays.sort_by {|e| [e[2], e[0], e[1]]} .each {|line| p line }
Run Code Online (Sandbox Code Playgroud)
我想你可以把e[2].to_s在sort_by.或者如果它仍然生成错误,请尝试以下方法:
e[2].nil? ? '' : e[2]
Run Code Online (Sandbox Code Playgroud)
要么
e[2].nil? ? ' ' : e[2]
Run Code Online (Sandbox Code Playgroud)
要么
e[2].blank? ? ' ' : e[2]
Run Code Online (Sandbox Code Playgroud)
其中一些人应该工作;)
Q2:如果列是数字,则可以-在该列之前添加符号,因此:
array_of_arrays.sort_by {|e| [e[2].to_s, -e[0], e[1]]} .each {|line| p line }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |