如何按字母顺序对数组进行排序?

时间:2015-03-14 16:43:35

标签: ruby arrays sorting alphabetical-sort

我的语法有问题尝试了一些事情,但仍然没有做到正确。我不明白的是什么? 感谢

change = ['cents', 'pennies', 'coins', 'dimes', 'pence', 'quarters']
change.sort {|anythinghere| a <=> b puts "Ascending #{anythinghere}" }

3 个答案:

答案 0 :(得分:9)

为什么不只是change.sort? 没有块的Array#sort默认为升序排序,即块{ |a, b| a <=> b }

sorted = change.sort # Ascending sort
sorted = change.sort { |a, b| a <=> b } # Same thing!
sorted
# => ["cents", "coins", "dimes", "pence", "pennies", "quarters"]

请注意,此块需要考虑您要比较的两个变量,这与您在问题中所写的块不同。只有在您希望修改元素的排序方式时,才需要包含自定义比较器,例如,如果您想按降序排序:{ |a, b| b <=> a }

如果要打印数组的文本表示,请使用

puts sorted

如果你想进行排序(不是创建一个新的arrray),请使用sort!

答案 1 :(得分:0)

coins = ['cents','pennies','coins','dime','pence','quarters']

coins.sort!

p个硬币

从更改中更改变量名,以避免使用红宝石魔术

答案 2 :(得分:-1)

使用sort_by方法:

change = ['cents', 'pennies', 'coins', 'dimes', 'pence', 'quarters']
change.sort_by { |change| change }
# => ["cents", "coins", "dimes", "pence", "pennies", "quarters"]