Ruby - 按哈希数组排序

Noé*_*vey 1 ruby arrays sorting hash

我有这个哈希数组:

@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
}]
Run Code Online (Sandbox Code Playgroud)

我想按距离对它进行排序.我试过了@fournisseurs.sort_by! { |fournisseur| fournisseur[:distance]},但它并没有对我的哈希数组进行排序.我读到这sort_by!是不稳定的.我怎样才能做到这一点?

提前致谢 !

Ste*_*fan 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
Run Code Online (Sandbox Code Playgroud)

  • _"@ Stefan,修复. - Stefan"_ - 有一种很好的精神分裂症 (6认同)