我想按单词的最后一个字符对数组排序。用最后一个字母对单词数组排序
def array_sort_by_last_letter_of_word(array)
list = array[-1,1]
list.sort { |a,b| b <=> a }
end
puts array_sort_by_last_letter_of_word ['sky', 'puma', 'maker']
我得到的输出只是"maker"
。 (使用String#last
)
我想按单词的最后一个字符对数组排序。用最后一个字母对单词数组排序
def array_sort_by_last_letter_of_word(array)
list = array[-1,1]
list.sort { |a,b| b <=> a }
end
puts array_sort_by_last_letter_of_word ['sky', 'puma', 'maker']
我得到的输出只是"maker"
。 (使用String#last
)
def array_sort_by_last_letter_of_word(array)
array.sort_by { |word| word[-1] }
end
Rails的版本:
def array_sort_by_last_letter_of_word(array)
array.sort_by(&:last)
end
干杯安德烈。感谢那。 – AltBrian
@AltBrian没有probs! –
AltBrian,如果你曾经在Rails中这样做过,你可以使用'word.last' :)。 @Andrey你认为我们会在普通的Ruby中获得'String#first','String#last'吗? –
安德烈的答案肯定是做到这一点的方式。但要了解您的代码出了什么问题:
list = array[-1,1]
此语法用于获取数组的子阵列。该模式为array[start, length]
以获得从索引start
开始的长度为length
的数组。所以你需要一个从-1
(这意味着最后一个索引)开始的长度为1
的数组,即数组的最后一个元素。所以last = ['maker']
。这就是为什么你的排序方法只是返回该元素。
你想要得到的最后一个字符内排序块,这是确定如何比较字符串
array.sort { |a,b| a[-1] <=> b[-1] }
还要注意的是被留下的b
a
需求,否则数组的排序相反。
另外请注意,虽然'sort'比'sort_by'多用途,但在大多数情况下'sort_by'就足够了,而且比sort更快。 – Amadan
请确保选择并接受最佳解决问题的答案。通过这种方式,您可以让社区知道您的问题已经解决,同时您也会奖励那些花时间帮助您的人。 –