each-Select

3911 단어
While Ruby’s  each  method is useful, it also comes with an awesome extended family of methods that are even more powerful!
For the next few examples, we’ll work with a slightly more complex data structure. It look like this:
friends = [
  {
    name: "Diego",
    status: "Online"
  },
  {
    name: "Liam",
    status: "Away"
  },
  {
    name: "Gloria",
    status: "Online"
  },
  {
    name: "Charlie",
    status: "Away"
  }
]
select  is similar to  each  in that we pass it a block to run on each element in the collection, but the similarities stop there. The important difference is that  select  will return a new collection with only the items that the block returned  true  for. It sounds pretty intimidating at first, so let’s walk through an example.
We can use  select  to create a new Array filled with only our online friends:
online_friends = friends.select do |friend|
  friend[:status] == "Online"
end

Because the block is so short, it would also work well as a one-liner:
online_friends = friends.select{|friend| friend[:status] == "Online"}
select  will go through each element one at a time, starting with  {name: “Diego”, status: “Online”} , passing it to the block we wrote. The block contains a single line:  friend[:status] == “Online” . That line returns either  true  or  false . If the block returns  true , that specific item is added to a new Array that will be returned at the very end of  select .
This table shows each step of the process:
 
 
At the very end,  select  returns this Array which we save to a new  online_friends  variable:
[{ name: "Diego", status: "Online"}, { name: "Gloria", status: "Online"}]

좋은 웹페이지 즐겨찾기