我有一个songs
数组,其中包含:
name
artist
album
genre
此刻阵列完全是随机的。
我希望用户能够按名称或艺术家等单独查看内容。
我记得,用另一种语言(php
),我可以创建一个新的数组,例如artists
,然后按songs
对artists
数组进行排序。这在理论上是好的但是如何实现?
我创建了一个artists
的排序数组,如下所示:
songs.each { |member|
artists << member.artist
}
artists.sort!
这很有效,并且在测试时按字母顺序将所有artists
输出到屏幕。
我的问题是我如何按songs
数组对artists
数组进行排序?即songs
将按artists
是否有更简单的方法按字母顺序对songs
数组进行排序?
最终,最好有一个name
数组,artist
数组,album
数组,genre
数组,每个数组的内容都与songs
数组,但按相关字段的字母顺序排序。
感谢您的帮助。
输入:
Songs
=
[['Song A','B Artist'],['Song D','A Artist'],['Song D','C Artist']]
示例输出
Artist
=
[['A Artist','Song D'],['B Artist','Song A'],['C Artist','Song D']]
答案 0 :(得分:2)
songs = [
{name: "Like a Rolling Stone", artist: "Bob Dylan"},
{name: "(I Can't Get No) Satisfaction", artist: "The Rolling Stones"},
{name: "Imagine", artist: "John Lennon" }
]
songs.sort_by { |song| song[:name] }
#=> [
# {:name=>"(I Can't Get No) Satisfaction", :artist=>"The Rolling Stones"},
# {:name=>"Imagine", :artist=>"John Lennon"},
# {:name=>"Like a Rolling Stone", :artist=>"Bob Dylan"}
# ]
songs.sort_by { |song| song[:artist] }
#=> [
# {:name=>"Like a Rolling Stone", :artist=>"Bob Dylan"},
# {:name=>"Imagine", :artist=>"John Lennon"},
# {:name=>"(I Can't Get No) Satisfaction", :artist=>"The Rolling Stones"}
# ]