加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组sort_by与nil元素(ruby)

发布时间:2020-12-17 02:58:23 所属栏目:百科 来源:网络整理
导读:我有代码按我想要的方式排序.由多个领域.凉.但现在我意识到有时元素可能是零. Q1:任何想法如何设法在搜索的顶部获得零值?并删除此错误消息:在“ =”中:未定义的方法“ =” for nil:NilClass(NoMethodError) Q2:在下面的代码中我按3个元素排序可以通过e
我有代码按我想要的方式排序.由多个领域.凉.但现在我意识到有时元素可能是零.

Q1:任何想法如何设法在搜索的顶部获得零值?并删除此错误消息:在“< =>”中:未定义的方法“< =>” for nil:NilClass(NoMethodError)

Q2:在下面的代码中我按3个元素排序可以通过e [2]以某种方式定义asc,按e [0]和asc按e [1].我正在排序csv文件,大多数字段将是文本字段.

array_of_arrays = [[1,9,'a'],[2,2,6,''],[1,3,1,'']] #doesnt work
array_of_arrays = [[1,'b'],'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 }

解决方法

我想你可以把e [2] .to_s放在sort_by中.或者如果它仍然生成错误,请尝试以下方法:

e[2].nil? ? '' : e[2]

要么

e[2].nil? ? ' ' : e[2]

要么

e[2].blank? ? ' ' : e[2]

其中一些人应该工作;)

Q2:如果列是数字,则可以在该列之前添加 – 符号,因此:

array_of_arrays.sort_by {|e| [e[2].to_s,-e[0],e[1]]} .each {|line| p line }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读