运维开发网

ruby – 数组中的字母顺序,顶部有多个默认值

运维开发网 https://www.qedev.com 2020-07-27 22:06 出处:网络 作者:运维开发网整理
我有一个带字符串的数组,我想按字母顺序排列,但有一些默认值在顶部.例如: ["a", "b", "default1", "d", "default2", "c", "e"] 我希望结果如下: ["default1", "default2", "a", "b", "c", "d", "e"] 有人知道如何轻松完成这项工作? UPDATE 默认值也包含在数组中,数组按字母顺序排列. 可枚举包括 par
我有一个带字符串的数组,我想按字母顺序排列,但有一些默认值在顶部.例如:

["a", "b", "default1", "d", "default2", "c", "e"]

我希望结果如下:

["default1", "default2", "a", "b", "c", "d", "e"]

有人知道如何轻松完成这项工作?

UPDATE

默认值也包含在数组中,数组按字母顺序排列.

可枚举包括 partition

data = ["a", "b", "default1", "d", "default2", "c", "e"]
data.partition{ |d| d['default'] }.flatten
=> ["default1", "default2", "a", "b", "d", "c", "e"]

如果您获得的数据没有按照您想要的最终顺序排序,您可以在对其进行分区之前对其进行预排序:

data = ["c", "b", "default2", "a", "default1", "e", "d"]
data.sort.partition{ |d| d['default'] }.flatten
=> ["default1", "default2", "a", "b", "c", "d", "e"]

如果你需要一个更智能和更全面的排序算法,处理各种“默认”条目,你可以使用sort或sort_by与lambda或proc,它可以告诉默认值和常规条目之间的区别,并返回所需的-1, 0和1值.

0

精彩评论

暂无评论...
验证码 换一张
取 消