gpt4 book ai didi

ruby - 带有 nil 元素的数组 sort_by 的数组(ruby)

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:34 24 4
gpt4 key购买 nike

我有按我想要的方式排序的代码。通过多个字段。凉爽的。但现在我意识到有时元素可能为零。

Q1: 知道如何设法在搜索顶部获取 nil 值吗?并删除此错误消息 :in "<=>": undefined method "<=>" for nil:NilClass (NoMethodError)

问题 2: 在下面的代码中,我按 3 个元素排序,我能否以某种方式定义按 e[2] 升序排序,按 e[0] 降序排序,按 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 }

最佳答案

我认为您可以将 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 }

关于ruby - 带有 nil 元素的数组 sort_by 的数组(ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com