`
qzriso
  • 浏览: 243006 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Ruby中的数组过滤

阅读更多

数组可以算是计算机编程中用到的最多的一个数据结构了,ruby中也是如此,这次我们来看看如何对数组中的项进行过滤,选出自己需要的项。

首先,假如有一个包含人名的数组:

  1. >>  name = %w{ zhangsan lisi wangwu zhaoliu galeki lyanry liulanger xiaosl tom nick bara}
  2. => [ "zhangsan" ,"lisi" ,"wangwu" ,"zhaoliu" ,"lyanry" ,"liulanger" ,"xiaosl" ,"tom" ,"nick" ,"bara" ]

假如我们现在要把4个字母的名字选出来,要怎么做呢?

像其他语言一样,写个for循环,遍历每一项,如果长度为4就选出来?

ruby有更好的办法,只需要一行:

  1. >>  name.find_all { |n| n.length == 4 }
  2. => [ "lisi" , "nick" , "bara" ]

find_all 方法配合后面的block,简洁明了的筛选出了符合条件的数组项。如果我们要从数组中剔除某些项,要用到 reject 方法:

  1. >>  name.reject { |n| n.length == 4 }
  2. => [ "zhangsan" , "wangwu" , "zhaoliu" , "galeki" , "lyanry" , "liulanger" , "xiaosl" , "tom" ]

block 中也可以复合多个条件:

  1. >>  name.find_all { |n| n.length >3 && n.length <8 && n[ 0 ,1 ] == "z" }
  2. => [ "zhaoliu" ]

以上语句从数组中筛选出长度大于3,小于8,并且首字母为z的名字,依旧简洁明了,忽略效率的因素,我们甚至可以把ruby中的数组当作数据库来查询了

分享到:
评论

相关推荐

    Ruby语言中文教程

    Ruby的数组和哈希都支持丰富的操作,如合并、迭代、过滤等。 五、模块和类 Ruby的模块(Module)用于组织代码,提供命名空间和混合(mixin)功能。类(Class)是创建对象的蓝图,可以包含方法、属性以及继承关系。...

    Ruby Data-Processing ruby数据处理

    3. **Ruby Select**: Select方法用于过滤数组中的元素,根据提供的条件返回满足条件的元素的新数组。例如,找出所有偶数: ```ruby numbers = [1, 2, 3, 4, 5] even_numbers = numbers.select { |n| n.even? } ...

    Logstash 的 Elasticsearch过滤器_Ruby_代码_相关文件_下载

    **Ruby 在 Logstash 过滤器中的应用** Ruby 是 Logstash 的主要编程语言,它允许用户自定义复杂的过滤逻辑。通过使用 Ruby 过滤器,我们可以编写任意的 Ruby 代码来处理事件,实现对数据的清洗、转换或增强。Ruby ...

    Programming-Ruby-1.9源代码

    - 集合操作如查找、排序、合并、过滤等,源代码会提供各种实例,帮助理解Ruby的数组和哈希操作的强大。 6. **文件和I/O** - 文件读写操作,如`File.open`,以及流处理,源代码将展示如何进行文件操作。 - 标准...

    ruby_quiz.rar

    5. **集合操作**:Ruby的数组和哈希提供了多种高效的操作,如映射、过滤、归并等,这些操作在解决复杂问题时能简化代码。 6. **模块和 Mixins**:Ruby的模块可以用来组织代码,也可以通过`include`或`extend`来实现...

    ruby实现邮件收发

    - 在block中,`send_mail`方法发送邮件,提供发件人地址和收件人地址的数组。 2. **邮件结构** 邮件由两部分构成:信封(envelope)和内容(content)。信封包含邮件传递信息,而内容包括标题(header)和实际...

    Ruby编程语言算法集

    `检查元素是否存在于数组中,`Hash#key?`则检查键是否存在哈希中。 Ruby的Gem库是其强大的扩展机制,其中包含了大量的算法实现,如计算几何、图论、数值分析等。例如,`NMatrix` gem 提供了高效的矩阵运算,适合...

    Ruby-Pony一种快速的方式在Ruby中发送电子邮件

    在实际项目中,你可能会遇到一些常见问题,比如邮件被当作垃圾邮件过滤,或者由于网络问题导致发送失败。这时,可以利用Pony的错误处理机制,例如设置重试策略或捕获异常。 总的来说,Pony是Ruby开发者用于快速、...

    函数式-确定性-Ruby取笑___下载.zip

    5. **过滤(Filter)**:`select`或`reject`方法在Ruby中用于根据给定条件筛选数组元素,返回满足条件的新数组。 6. **折叠(Fold/Reduce)**:`reduce`方法将数组的所有元素归约到单个值,它可以用于求和、乘积或...

    学习Ruby_11961032.pdf

    使用场景:数组中元素都是有各自的索引位置,有时候我们想人为的控制某个元素的索引编号,或者不想使用某个索引编号,可以在数组中加入nill来占位 数组的.each方法,each可以逐一对各元素进行某种方法,体现在...

    Ruby的迭代之道:each与map的较量

    `each` 和 `map` 是两种常见的迭代方法,它们用于遍历数组或集合中的元素。虽然它们在某些场合可以相互替代,但它们之间存在显著差异。 ##### `each` 方法:迭代的基石 `each` 方法是 Ruby 中最基础的迭代方法之一...

    AngularJS 过滤器(自带和自建)详解

    在这个例子中,我们通过$filter服务调用了内置的lowercase过滤器,将字符串"Ruby"转换为小写,并将转换后的值赋给$scope.name。 创建自定义过滤器的步骤如下: 1. 使用.filter方法定义一个新的过滤器。这个方法...

    基于Ruby编写的命令行注入版本.zip

    在Ruby编程语言中,命令行注入是一种常见的安全漏洞,它发生在程序不安全地处理用户输入,从而允许攻击者执行任意操作系统命令。这个"基于Ruby编写的命令行注入版本.zip"可能包含一个示例代码库或者教程,用于演示...

    atcoder-ruby:Ruby中AtCoder问题的解决方案

    Ruby提供了丰富的数组方法,如`map`、`each`、`select`、`reduce`等,可以方便地对序列进行转换和过滤。理解这些方法的工作原理,能提高解题效率。 4. **字符串处理** 字符串处理是编程竞赛中常见的任务,Ruby的...

    ruby使用REXML解析处理xml.pdf

    这是访问一个确实是数组的子节点的最快方式,不支持XPath 搜索,并且所有的子节点元素都在这个数组中,不只是Element 的子节点。 4. XPath:在 REXML 中,XPath 是从 1 开始计数的,而不是 0,因为 XPath 就是从 1 ...

    Ruby-TorS一个命令行的torrent搜索应用

    1. **命令行参数处理**:Ruby的`OptionParser`库或`ARGV`全局数组可以帮助解析命令行参数,根据用户提供的选项进行相应操作。 2. **HTTP请求与解析**:为了与torrent搜索引擎交互,需要使用如`Net::HTTP`库发送HTTP...

    <<Ruby for Rails中文版>>源代码

    1. **Ruby基础知识**:理解Ruby的基本数据类型(如字符串、数字、数组、哈希)、控制结构(如if语句、case语句、循环)、方法定义、类和模块的概念以及继承机制。此外,还需了解Ruby中的块、Proc和Lambda,以及它们...

    Ruby经典学习教程(口碑不错)

    - Ruby中的运算符本质上是方法,可以通过重定义这些方法来自定义运算符的行为。 **7.2 变长参数** - 方法可以接受不定数量的参数,使用`*args`来接收额外的参数。 **7.3 块调用** - 方法可以接受代码块,并在...

Global site tag (gtag.js) - Google Analytics