我该如何在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"]