我有这个哈希数组:
@fournisseurs = [
{ id: 10592,
nom: 'Carrossier Procolor Armand-Paris (Garage Michel Tondreau)',
distance: '3.9 km',
dispos: nil
},
{ id: 10463,
nom: 'Carrossier Procolor Grand Beauport(Garage Michel Tondreau)',
distance: '3.8 km',
dispos: nil
},
{ id: 10594,
nom: 'Honda Charlesbourg',
distance: '5.2 km',
dispos: nil
},
{ id: 10508,
nom: 'Carrossier ProColor Charlesbourg',
distance: '15.5 km',
dispos: nil
}]
我想按距离对它进行排序。我试过了@fournisseurs.sort_by! { |fournisseur| fournisseur[:distance]}
,但它并没有对我的哈希数组进行排序。我读到sort_by!
不稳定。我怎么能这样做?
提前致谢!
答案 0 :(得分:6)
假设每个距离都以字符串形式给出,您需要将其转换为浮点数,以便有效地按距离排序。
@fournisseurs = [
{ id: 10592,
nom: 'Carrossier Procolor Armand-Paris (Garage Michel Tondreau)',
distance: '3.9 km',
dispos: nil
},
{ id: 10463,
nom: 'Carrossier Procolor Grand Beauport(Garage Michel Tondreau)',
distance: '3.8 km',
dispos: nil
},
{ id: 10594,
nom: 'Honda Charlesbourg',
distance: '5.2 km',
dispos: nil
},
{ id: 10508,
nom: 'Carrossier ProColor Charlesbourg',
distance: '15.5 km',
dispos: nil
}]
@fournisseurs.sort_by! { |f| f[:distance].to_f}
puts @fournisseurs.inspect