"XXXXX", :photo=>"XXX"}, {:id=>3, :fname=>"Dain", :lname=-6ren">
gpt4 book ai didi

ruby-on-rails - 如何对对象数组进行排序?

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

我有一个对象如下:

[{:id=>2, :fname=>"Ron", :lname=>"XXXXX", :photo=>"XXX"}, {:id=>3, :fname=>"Dain", :lname=>"XXXX", :photo=>"XXXXXXX"}, {:id=>1, :fname=>"Bob", :lname=>"XXXXXX", :photo=>"XXXX"}] 

我想按 fname 排序,不区分大小写,所以它会导致

编号:1,3,2

我该如何排序?我正在尝试:

@people.sort! { |x,y| y[:fname] <=> x[:fname] }

但这没有任何效果。

最佳答案

您可以使用 sort_by .

@people.sort_by! { |x| x[:fname].downcase }

(小写是为了不区分大小写)

为了完整起见,所提供代码的问题是:

  • 参数顺序错误
  • 没有调用小写

以下代码使用排序方法。

@people.sort! { |x,y| x[:fname].downcase <=> y[:fname].downcase }

作为这两种方法做同样事情的证据:

@people.sort_by {|x| x[:fname].downcase} == @people.sort { |x,y| x[:fname].downcase <=> y[:fname].downcase }

返回

关于ruby-on-rails - 如何对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320252/

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