如何在 Rails 中对数组进行排序(按字母顺序)。我试过了:
sort_by(&:field_name)
这给了我一个大写字母顺序然后小写顺序的数组。我试过了:
array.sort! { |x,y| x.field_name.downcase <=> y.field_name.downcase }
有没有办法解决这个问题?
如何在 Rails 中对数组进行排序(按字母顺序)。我试过了:
sort_by(&:field_name)
这给了我一个大写字母顺序然后小写顺序的数组。我试过了:
array.sort! { |x,y| x.field_name.downcase <=> y.field_name.downcase }
有没有办法解决这个问题?
您应该首先将每个字符串小写,然后按如下方式排序:
array = ["john", "Alice", "Joseph", "anna", "Zilhan"]
array.sort_by!{ |e| e.downcase }
=> ["Alice", "anna", "john", "Joseph", "Zilhan"]
请注意 - 名称可以包含特殊字符。这些将被排序到最后。
>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| e.downcase }
=> ["Alice", "john", "Zilhan", "Ägidius"]
为了解决这个问题,您可以使用...
>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| ActiveSupport::Inflector.transliterate(e.downcase) }
=> ["Ägidius", "Alice", "john", "Zilhan"]