gpt4 book ai didi

ruby - 如何按多个键排序,其中一些键按降序排列

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:52 24 4
gpt4 key购买 nike

我有一个哈希数组:

a = [
{ :id => 10, :name => 'bush' },
{ :id => 2, :name => 'sugar' },
{ :id => 10, :name => 'mountain' },
{ :id => 10, :name => 'bug' },
{ :id => 8, :name => 'sugar' }
]

我想先按 id 数字升序对数组进行排序,然后按名称按字母降序对数组进行排序,因此最终结果将是:

a = [
{ :id => 2, :name => 'sugar' },
{ :id => 8, :name => 'sugar' },
{ :id => 10, :name => 'mountain' },
{ :id => 10, :name => 'bush' },
{ :id => 10, :name => 'bug' }
]

我如何实现这一目标?

最佳答案

根据对您的问题所做的编辑,您可以使用传统的排序方式

a.sort { |a, b| [a[:id], a[:name]] <=> [b[:id], b[:name]] }
=> [
{:id=>2, :name=>"sugar"},
{:id=>8, :name=>"sugar"},
{:id=>10, :name=>"bug"},
{:id=>10, :name=>"bush"},
{:id=>10, :name=>"mountain"}
]

您可以通过交换条件检查来切换排序顺序。

a.sort { |a, b| [a[:id], b[:name]] <=> [b[:id], a[:name]] }
=> [
{:id=>2, :name=>"sugar"},
{:id=>8, :name=>"sugar"},
{:id=>10, :name=>"mountain"},
{:id=>10, :name=>"bush"},
{:id=>10, :name=>"bug"}
]

关于ruby - 如何按多个键排序,其中一些键按降序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437025/

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