簡體   English   中英

如何使用ruby中的sort_by按字母順序對數組進行排序?

[英]How do you sort an array alphabetically using sort_by in ruby?

我有一系列的會員資格。 每個會員都是一個團體。 我需要按照組的名稱對這個成員數組進行排序。 我嘗試了很多不同的方法,最新的方法是:

@memberships.sort_by! { |m| m.group.name }

但是,這並沒有按名稱排序。 它似乎是隨機排序數組。

  • 成員資格belongs_to:group
  • 集團has_many:會員資格

@memberships等於:

[
  {
  id: 2141,
  user_id: 491,
  group_id: 271,
  member_type: "member",
    group: {
      id: 271,
      name: "Derek's",
      privacy: "open",
      bio_image_url: "/bio_images/medium/missing.png?1340285189",
      member_count: 1,
      upcoming_checkins_count: 0
    }
  },
  {
  id: 2201,
  user_id: 221,
  group_id: 291,
  member_type: "member",
    group: {
      id: 291,
      name: "Rounded Developement",
      privacy: "closed",
      bio_image_url: "/groups/medium/291/bioimage.jpg?1340736175",
      member_count: 7,
      upcoming_checkins_count: 0
   }
}
]

注意:這確實有效 - > @ memberships.sort_by! {| m | m.group.id}

它將基於group.id對數組進行排序,所以它可能與按字母順序排序有關嗎?

任何幫助將非常感激。

哇,經過這么長時間的努力,我意識到我的問題很簡單。 我按group.name進行排序,但是一些組名是大寫的,有些是較低的,這就是把它全部拋棄了。 將所有內容轉換為downcase運行良好。

@memberships.sort_by!{ |m| m.group.name.downcase }

排序方法是一種選擇嗎?

ary.sort{ |a,b| a[:group][:name] <=> b[:group][:name] }

我不知道你的代碼是如何工作的。 我無法使用m.group.name訪問數組中的哈希值

這是一個有效的語法

@memberships.sort_by!{ |m| m[:group][:name] }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM