【发布时间】:2013-10-18 22:00:51
【问题描述】:
给定以下 ruby 数组:
["2XL", "3XL", "4XL", "5XL", "6XL", "L", "M", "S", "XL"]
如何对其进行排序以使其按此顺序排列?
["S", "M", "L", "XL", "2XL", "3XL", "4XL", "5XL", "6XL"]
请注意,每个尺寸并不总是存在。
为了历史,这是我最初的实现。
sorted_sizes = []
sorted_sizes << "S" if sizes.include?("S")
sorted_sizes << "M" if sizes.include?("M")
sorted_sizes << "L" if sizes.include?("L")
sorted_sizes << "XL" if sizes.include?("XL")
sorted_sizes << "2XL" if sizes.include?("2XL")
sorted_sizes << "3XL" if sizes.include?("3XL")
sorted_sizes << "4XL" if sizes.include?("4XL")
sorted_sizes << "5XL" if sizes.include?("5XL")
sorted_sizes << "6XL" if sizes.include?("6XL")
sorted_sizes
【问题讨论】:
-
如果不是每个尺寸都始终存在,您是否希望它出现在排序后的数组中?
-
@squiguy,不,我不希望排序后的数组的值不存在于正在排序的数组中。
-
您的解决方案建议要排序的数组从不包含重复项,或者排序后的数组不包含重复项。正确的?请注意,“
sort_by”解决方案将包含要在已排序数组中排序的数组中的重复项,而 @sawa 的解决方案不会。