码迷,mamicode.com
首页 > 其他好文 > 详细

each-Select

时间:2016-04-30 18:12:26      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

 

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"}]

 

 

each-Select

标签:

原文地址:http://www.cnblogs.com/iwangzheng/p/5449010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!