gpt4 book ai didi

Ruby Sort_by 多个参数与 asc/desc 相反

转载 作者:行者123 更新时间:2023-12-03 23:26:38 26 4
gpt4 key购买 nike

尝试按多个参数排序,但在一个参数升序排序和另一个参数降序排序时遇到问题。

array = [20, 10, 40, 1200, 300]
我需要首先按每个数字降序的位数对数组进行排序。
所以我们得到 [1200, 120, 40, 10, 20]如果长度之间存在联系,我需要按值对它们进行升序排序
所以我们得到: [1200, 120, 10, 20, 40]我正在尝试使 sort_by 为此工作,但我无法弄清楚如何对第一个参数进行降序排序和第二个参数升序排序。
def digit_sorter(ar) 
ar.sort_by {|num| [num.to_s.length, num]}.reverse
end
我也试过 [ [num.to_s.length], [num].reverse ]

最佳答案

# length desc, value asc
def digit_sorter(nums)
nums.sort { |a, b| [b.to_s.length, a] <=> [a.to_s.length, b] }
end


# length asc, value desc
def digit_sorter(nums)
nums.sort { |a, b| [a.to_s.length, b] <=> [b.to_s.length, a] }
end
输入相同的数组 [345, 23, 34, 1] ,输出分别为
# length desc, value asc
[345, 23, 34, 1]

# value desc, length asc
[1, 34, 23, 345]

关于Ruby Sort_by 多个参数与 asc/desc 相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63572149/

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