【发布时间】:2020-07-05 03:28:15
【问题描述】:
我正在定义一个方法,它应该采用一个字符串数组,将其分成 2 个单词对并对其进行排序。
但是,排序并没有按照我的预期进行。它将“s”排在“m”之前(对于“my say”这对,它将“say”放在“my”之前)。
def sorted_pairs(array)
puts "original: #{array}"
new_array = array.each_slice(2).to_a
puts "sliced: #{new_array}"
new_array.sort #this line does nothing?
puts "sorted: #{new_array}"
return new_array
end
#test
words = %w(say my name say my name)
puts sorted_pairs(words)
expected: [["my", "say"], ["name", "say"], ["my", "name"]]
got: [["say", "my"], ["name", "say"], ["my", "name"]]
排序!也不起作用,因为它会根据每对内的元素对对进行排序(而不是对对本身进行排序)。
expected: [["my", "say"], ["name", "say"], ["my", "name"]]
got: [["my", "name"], ["name", "say"], ["say", "my"]]
【问题讨论】:
-
如果要对每个子数组进行排序,则使用 map 对每个子数组进行排序。您可能需要使用 sort_by
-
“它将“s”排在“m”之前(对于“my say”这对,它将“say”放在“my”之前)。 ——请仔细看。它不是“随机”排序的。结果只是“说出我的名字,说出我的名字”,所以它显然不是“随机”排序的,它根本没有排序,这是非常不同 来自“随机”。