说我有:
a = ["apple", "pear", ["grapes", "berries"], "peach"]
我想按以下分类:

a.sort_by do |f|
  f.class == Array ? f.to_s : f
end

我得到:
[["grapes", "berries"], "apple", "peach", "pear"]

实际上,我希望项目按字母顺序排列,数组项目按其第一个元素排序:
["apple", ["grapes", "berries"], "peach", "pear"]

或者,最好,我想:
["apple", "grapes, berries", "peach", "pear"]

如果这个例子不够清楚,我希望按字母顺序对项目进行排序。
有什么到那里的建议吗?
到目前为止,我试过几件事,但似乎还没有达到目的。谢谢。

最佳答案

我想这就是你想要的:

a.sort_by { |f| f.class == Array ? f.first : f }

07-28 12:47