让我们说我有一系列单词,例如:
words = ["apple", "zebra", "boat", "dog", "ape", "bingo"]
我想按字母顺序对它们进行排序,但是将它们分组如下:
sorted = [["ape", "apple"], ["bingo", "boat"], ["dog"], ["zebra"]]
我如何在Ruby中执行此操作?帮助赞赏。
答案 0 :(得分:4)
我假设你试图按每个单词的第一个字母分组。在这种情况下,您可以使用sort
对数组进行排序,并使用group_by
按每个单词的第一个字符进行分组(由chr
返回)。
words = ["apple", "zebra", "boat", "dog", "ape", "bingo"]
sorted = words.sort.group_by(&:chr).values
答案 1 :(得分:2)
你可以这样做:
words.sort.chunk { |s| s[0] }.map(&:last)
首先按字母顺序对数组进行排序(.sort
),然后将具有相同第一个字符(.chunk { |s| s[0] }
)的元素“组合”在一起,然后从每个子数组{{抓取>最后一个元素1}}。
答案 2 :(得分:0)
这样的事情可以解决问题
words = ["apple", "zebra", "boat", "dog", "ape", "bingo"]
sorted = words.sort.group_by { |s| s[0] }.map { |k,v| v }
答案 3 :(得分:0)
您将需要一个也代表您的类别的数组。在这种情况下,字母表的字母。以下是使用嵌套循环查找的内容。
words = ["apple", "zebra", "boat", "dog", "ape", "bingo"]
results = []
('a'..'z').to_a.each_with_index do |letter, index|
letter_result = []
words.each do |word|
if(word[0]==letter)
letter_result.push(word)
end
end
unless letter_result.empty?
results.push(letter_result)
end
end