`
qzriso
  • 浏览: 236908 次
  • 性别: 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_11961032.pdf

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

    程序员为什么还要刷题-ruby-intro:[Ruby]

    它从数据库中收集信息,使用逻辑对其进行过滤,然后从中生成一些信息发送回用户。 这可能是 HTML,或者,在 API 的情况下,JSON。 这意味着您不能像通过浏览器控制台使用 Javascript 一样查看或弄乱站点的服务器端...

    savgol:在Ruby中实现Savitzky-Golay过滤器(并最终在NMatrix中实现)

    savgol 提供Savitzky-Golay平滑(过滤)的实现。 gem是基于(给出完全相同的结果)。 可以找到对该过程的很好的解释。例子均匀分布的数据数组实现(面向对象) require 'savgol/array'data = [1, 2, 3, 4, 3.5, 5, 3...

    :briefcase:管理应用程序特定的业务逻辑。-Ruby开发

    ActiveInteraction ActiveInteraction管理特定于应用程序的业务逻辑。 它是Ruby中命令模式的实现。 ActiveInteraction为您提供了放置业务逻辑的...安装基本用法验证过滤器数组布尔文件哈希接口对象记录字符串符号日期

    smart_listing:Ruby on Rails数据清单gem具有内置的排序,过滤和就地编辑功能

    智能清单SmartListing通过分页,过滤,排序和就地编辑帮助创建ActiveRecord集合或数组的启用AJAX的列表。安装添加到您的Gemfile中: gem "smart_listing" 然后运行: $ bundle install 另外,您需要将SmartListing...

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

    在JavaScript代码中可以通过$filter来调用过滤器 例:  app.controller(‘DemoController‘, [‘$scope‘, ‘$filter‘,  function($scope, $filter) {  $scope.name = $filter(‘lowercase‘)(‘Ruby‘);  }])...

    vignette:简单,有效的Ruby和Rails Ab测试

    例子小插图就像从数组中采样一样简单: @price = [5, 10, 15].vignette我们还为HAML添加了一个过滤器,用于运行快速的A / b测试: %h1 :vignette Welcome to the Zoo. Come to see the Lions! Don't get caught by a...

    jekyll-search_filter:可以搜索数据的液体过滤器

    search过滤器允许搜索数组中具有某个值的属性的项目。 例如,您可以搜索具有title值为Title 1的新闻数据记录的列表。 {% assign result = site.data.news | search:'title', 'Title 1' %} 您可以根据需要传递尽...

    datagrid:Gem创建具有可排序列和过滤器的表网格

    数据网格 Ruby库可帮助您通过以下方式构建和表示类似表格的数据: 可自定义的过滤列排序本土化导出为CSVORM支持活动记录蒙古族MongoMapper 续集数组(慢但可能) 如果您想要更多,请。依存关系Ruby&gt; = 2.0 导轨&gt; = ...

    liquid_extensions:杂项液体标签和过滤器列表

    该gem包含有用的Liquid块,标签和过滤器的列表,它们都可以嵌入Wagon和LocomotiveCMS引擎中。 在后台,它使用Solid编写可靠且一致的液态代码。 目前,它仅在边缘版本的Wagon和引擎(主分支)上最有效。 过滤器清单...

    facterdb:Facter提供的OS事实数据库

    Ruby require 'facterdb'FacterDB :: get_facts ( ) 返回包含整个事实数据库的哈希数组。按事实版本和事实值过滤带阵列过滤器 require 'facterdb'FacterDB . get_facts ( [ { :osfamily =&gt; 'Debia

    write_xlsx:Rubygem用于创建Excel XLSX文件

    公式(包括数组格式) 图片 图表 自动过滤器 资料验证 条件格式 巨集 桌子 形状 迷你图 超连结 丰富的字符串格式 定义名称 分组/轮廓 单元格注释 窗格 页面设置和打印选项 write_xlsx使用与writeexcel gem相同的...

    dhtmlxGridk 中文文档

    网格组件可以轻松实现丰富的单元格内编辑和内置的好看的DHTML表(通过CSS或预定义的皮肤管理),过滤、搜索和分组功能。众多的事件处理程序,可以添加必要的交互性到您的基于网格 的接口。智能渲染和分页支持,让这...

    sensu-extensions-check-dependencies

    可以使用检查项,检查项数组(例如check_app ),Sensu客户端/检查对(例如db-01/check_mysql )或订阅/检查对(例如subscription:mysql/check_mysql )在检查定义中定义检查依赖性。 。 安装 此扩展要求Sensu版本&gt;...

    疯狂JAVA讲义

    学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样不可以扩展成三维数组吗?甚至扩展到更多维的数组? 101 4.6.5 操作数组的工具类 102 4.6.6 数组的应用举例 103 4.7 本章小结 106 本...

    javaSE代码实例

    5.2 Java中数组的实现机制 61 5.3 数组的初始化 63 5.3.1 默认初始化 63 5.3.2 利用循环初始化 64 5.3.3 枚举初始化 66 5.4 数组的相互赋值 67 5.4.1 基本类型数组赋值规则 67 5.4.2 引用型数组赋值...

    Scala程序设计(第2版)

    19.1 一个较为激进的示例:Ruby on Rails框架中的ActiveRecord库 396 19.2 使用动态特征实现Scala 中的动态调用 397 19.3 关于DSL的一些思考 402 19.4 本章回顾与下一章提要 402 第20章 Scala的领域...

    tty-table:灵活直观的表格生成器

    表的行为类似于具有熟悉的API的数组, 一次创建表格并使用自定义视图渲染器进行渲染, 渲染提供了许多显示选项, 轻松自定义边框创建, 支持多字节字符编码 安装 将此行添加到您的应用程序的Gemfile中: gem "tty-...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的...再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥...

Global site tag (gtag.js) - Google Analytics