在程序中定义一个数组

在程序中定义一个数组,因为我们在下面说明。

fruits = ["apple", "orange", "lemon"]
scores = [55, 49, 100, 150, 0]

如果你是指使用数组的数组#[]的方法,我们将指定数目的元素的数组作为参数。我单元号是从0开始。在上面的例子中,fruits[0]返回“apple”,scores[3]将返回150。
也可以是一个(嵌套)嵌套的序列如下所示。

fruits = [3, ["apple", 250], ["orange", 400], ["lemon", 300]]

p fruits[0] #=> 3
p fruits[1][1] #=> 250
p fruits[3][0] #=> "lemon"

输出数组元素的一个逗号分隔的列表
您将能够得到一个字符串分隔的任何字符串,数组中的元素使用Array#join方法。

p ["apple", "orange", "lemon"].join(',') #=> "apple,orange,lemon"
p ["apple", "orange", "lemon"].join('#') #=> "apple#orange#lemon"
p [55, 49, 100, 100, 0].join(',') #=> "55,49,100,100,0"
p [3, ["apple", 250], ["orange", 400]].join(',') #=> "3,apple,250,orange,400"

获取在数组中的元素数
你可以得到数组中的元素个数的数组长度数组大小的方法或方法。

p ["apple", "orange", "lemon"].size #=> 3
p ["apple", "orange", "lemon"].length #=> 3
p [55, 49, 100, 100, 0].size #=> 5
p [3, ["apple", 250], ["orange", 400]].size #=> 3

将元素添加到数组

如果你想生成一个数组添加一个元素后,我们可以使用Array#<<的方法,Array#unshift方法,Array#push。

array#<<将元素追加早最后,array#unshift方法可以将元素添加到数组开头。

A = [1,2,3,4,5]#=> [1,2,3,4,5] 

A << 99#=> [1,2,3,4,5,99]
A.Unshift (99)#=> [99,1,2,3,4,5,99]

Array#push方法可以被添加到的数组元素的结尾

A = [1,2,3,4,5] 

A.Push(10)#=> [1,2,3,4,5,10]

从开头或结尾的数组元素删除
在Array#shift的方法,可以检索的元素,从一开始的数组。array#pop方法是可以检索的数组中的元素。提取值的数组移位的方法,数组#pop方法,数组中的元素的提取物中删除。

a = [1,2,3,4,5]

a.push(10) #=> [1, 2, 3, 4, 5, 10]
p a.pop #=> 10
p a.pop #=> 5
p a #=> [1, 2, 3, 4]

提取一个子数组

你可以把部分的数组用array#slice的方法或Array#[]的方法。

a = [1,2,3,4,5]

p a[0,2] #=> [1, 2]
p a[1..3] #=> [2, 3, 4]
p a.slice(0,2) #=> [1, 2]
p a.slice(1..3) #=> [2, 3, 4]

array#slice! 方法会改变原来数组元素

a = [1,2,3,4,5]

p a.slice!(0,2) #=> [1,2]
p a #=> [3,4,5] p a.slice!(1,2) #=> [4,5]
p a #=> [3]

填充任何数组的值
您可以使用array#fill方法填充任意元素。这种方法会改变原来数组元素。

a = [1,2,3,4,5]

a.fill(255, 2,2) #=> [1, 2, 255, 255, 5]
a.fill(0, 1..2) #=> [1, 0, 0, 255, 5]

清空数组
您可以用array#clear方法清空数组所有元素。

a = [1,2,3,4,5]
a.clear #=> [] p a #=> []

连接数组

可以使用array#+或者array#concat方法将多个数组连接

a = [1,2,3,4,5]

p a + [10, 20] #=> [1, 2, 3, 4, 5, 10, 20]
p a #=> [1, 2, 3, 4, 5]
a.concat([10, 20]) #=> [1, 2, 3, 4, 5, 10, 20]
p a #=> [1, 2, 3, 4, 5, 10, 20]

数组的交集与并集

p [1,3,5,7] | [2,4,6,8] #=> [1, 3, 5, 7, 2, 4, 6, 8]
p [1,2,3,4] | [3,4,5,6] #=> [1, 2, 3, 4, 5, 6] p [1,3,5,7] & [2,4,6,8] #=> []
p [1,2,3,4] & [3,4,5,6] #=> [3, 4]

修改数组中多个元素

a = [1,2,3,4,5]

a[0...2] = [111, 222, 333]
p a #=> [111, 222, 333, 3, 4, 5] a[3,2] = [444,555] #=> [444, 555]
p a #=> [111, 222, 333, 444, 555, 5]

将多维数组转换为一维数组

a = [1,[2,[3,4],5],[6,7]]

p a.flatten #=> [1, 2, 3, 4, 5, 6, 7]
a.flatten! #=> [1, 2, 3, 4, 5, 6, 7]

数组元素排序方法

p [5,1,4,2,3].sort #=> [1, 2, 3, 4, 5]

a = [5,1,4,2,3]
a.sort! #=> [1, 2, 3, 4, 5]
p a #=> [1, 2, 3, 4, 5] p ["Orange", "Apple", "Lemon"].sort #=> ["Apple", "Lemon", "Orange"]

指定表达式的数组排序

a = ["Hitoshi,045", "Sizuo,046", "Yoshi,0138"]

p a.sort{|a, b| a.split(',')[1] <=> b.split(',')[1]} #=> ["Yoshi,0138", "Hitoshi,045", "Sizuo,046"]
ar = [[2,"b"],[3,"a"],[1,"c"]]
ar.sort{|p,q|p[0]<=>q[0]}
#=> [[1, "c"], [2, "b"], [3, "a"]]
ar.sort{|p,q|p[1]<=>q[1]}
# => [[3, "a"], [2, "b"], [1, "c"]]

反转数组

a = [5,1,4,2,3]

a.sort! #=> [1, 2, 3, 4, 5]
p a.reverse #=> [5, 4, 3, 2, 1]
a.reverse! #=> [5, 4, 3, 2, 1]

删除指定位置的数组元素

a = [5,1,4,2,3]

a.delete_at(0) #=> 5
p a #=> [1, 4, 2, 3] a.delete_at(1) #=> 4
p a #=> [1, 2, 3]

删除匹配元素

a = ["apple", "orange", "lemon", "apple", "vine"]

a.delete("apple") #=> ["apple"]
p a #=> ["orange", "lemon", "vine"]
a.delete("apple") { |x| puts "#{x} not found" } #=> "apple not found"

删除重复元素

a = [30,20,50,30,10,10,40,50]
p a.uniq #=> [30, 20, 50, 10, 40] a = ["/tmp","/home/","/etc","/tmp"]
a.uniq! #=> ["/tmp", "/home", "/etc"]

从数组中删除指定条件的元素

a = [30,100,50,80,79,40,95]

a.delete_if {|x| x < 80} #=> [100, 80, 95]
p a #=> [100, 80, 95] p a.reject {|x| x < 90} #=> [100, 95]
p a #=> [100, 80, 95] a.reject! {|x| x < 90} #=> [100, 95]
p a #=> [100, 95] a = ["Takeuchi", "Tanaka", "Satou", "Andou", "Kurasaki"] a.delete_if {|x| /^T.*/ =~ x} #=> ["Satou", "Andou", "Kurasaki"]

数组中提取指定条件的元素

a = [1, 2, 3, 4]
p a.select{|x| x % 2 == 0} # => [2, 4] b = [['Taro', 'M'], ['Hanako', 'F'], ['Jiro', 'M'], ['Sachiko', 'F']]
p b.select{|x| x[1]=='M'} # => [["Taro", "M"], ["Jiro", "M"]]

查找数组元素

a = ["apple",10,"orange",["lemon","vine"]]

p a.index("apple") #=> 0
p a.index(10) #=> 1
p a.index(["lemon","vine"]) #=> 3
p a.index("fruit") #=> nil

搜索多维数组

a = [["apple",100],["vine",500],["orange",300]]

p a.assoc("apple")  #=> ["apple", 100]
p a.assoc("orange") #=> ["orange", 300]
p a.assoc("pear") #=> nil

创建新数组

使用array#map 或者array#collect方法

a = [10, 20, 30, 40, 50]
p a.collect {|x| x*10} #=> [100, 200, 300, 400, 500]
p a #=> [10, 20, 30, 40, 50] p a.map {|x| x*10} #=> [100, 200, 300, 400, 500]
p a #=> [10, 20, 30, 40, 50] a.collect! {|x| x/10} #=> [1, 2, 3, 4, 5]
p a #=> [1, 2, 3, 4, 5] a = [["vine", 2, 500], ["orange", 3, 100], ["apple", 10, 50]]
p a.map {|x| [x[0], x[1]*x[2]]} #=> [["vine", 1000], ["orange", 300], ["apple", 500]]

迭代数组中各个元素

["Taro", "Hanako", "Ichiro"].each {|x| puts "Hello, #{x}"}
#=> "Hello, Taro"
#=> "Hello, Hanako"
#=> "Hello, Ichiro" sum = 0
[1,2,3,4,5,6,7,8,9,10].each {|x| sum += x}
p sum #=> 55

还可以使用Array#reverse_each方法反转元素迭代

随机提取数组元素

if RUBY_VERSION < '1.9.0'
class Array
def choice
at( rand( size ) )
end
end
end
[1, 2, 3].choice #=> 3
[1, 2, 3].choice #=> 1

用%w方式你可以把用分割符号包含的;用空格隔开的不同字符串定义为一个数组:
words = %w[this is a test]  # 等同于: ['this', 'is', 'a', 'test']
open = %w| ( [ { < |        # 等同于: ['(', '[', '{', '<']
white = %W(\s \t \r \n)     # 等同于: ["\s", "\t", "\r", "\n"]

用%w或%W定义数组的方式类似于用%q和%Q定义字符串,分界符号的规则也一样,在分界符号中的元素无需分号('',“”)包含,无需逗号分隔,不同元素之间用空格隔开。
你还可以通过Array.new 来定义数组,这种方式可以让你通过程序化的手段还初始化数组:

ruby中数组的常用函数的更多相关文章

  1. Ruby中Time的常用函数

      Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...

  2. php 数组的常用函数

    在php教程中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函 ...

  3. PHP数组的常用函数

    在PHP中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函数 ...

  4. 操作 numpy 数组的常用函数

    操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...

  5. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  6. php中文件操作常用函数有哪些

    php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...

  7. c++中string的常用函数说明

    string可以说是是字符数组的升级版,使用更加啊方便,不容易出错.本文对string的常用函数进行简单介绍,做到会用即可. string中的常用函数分为四类,即赋值,添加,比较和删除. 一.赋值 1 ...

  8. PHP中的一些常用函数

    <?php //===============================时间日期=============================== //y返回年最后两位,Y年四位数,m月份数字 ...

  9. Ruby中数组的遍历

    转自:http://www.jianshu.com/p/8de9b60f9350 Ruby中有几个常用的遍历数组的方法,本人经常容易搞混.这里列出来总结一下. each: 从数组中取出一个元素,作为某 ...

随机推荐

  1. WPF 最简单的TextBox水印

    最简单的TextBox加水印的方法,但是不具有很强的通用性. 如果你只是使用一次,或者用的不多,偷偷懒可以使用. 因为此方法只需要修改TextBox的Template,而不用重写何任代码. 注意: 1 ...

  2. python 应用 base64、hmac、hashlib包实现:MD5编码 base64编码解码、SHA256编码、urlsafe_b64encode编码等等基本所有的加密签名的方法

    用python做HTTP接口自动化测试的时候,接口的很多参数是经过各种编码加密处理后在传到后台的,这里列举出python实现 应用 base64.hmac.hashlib包实现:md5编码 sha1编 ...

  3. jquery.cookie.js 删除cookie

    简单交代一下背景:asp.net页面的上的切换登录按钮的点击事件实现cookie的删除. 但是好像没办法直接删除,通过网上提供的方法,可以使用jquery.cookie.js 来操作cookie的创建 ...

  4. telerik自定义皮肤的制作及用法

    1. 打开telerik 官网 http://stylebuilder.telerik.com/ 2. 选择一个皮肤做为基础皮肤,并选择要制作的控件,并新取一个名字.比如选择皮肤Silk为基础皮肤,新 ...

  5. jwt的ASP.NET MVC 身份验证

    Json Web Token(jwt)      一种不错的身份验证及授权方案,与 Session 相反,Jwt 将用户信息存放在 Token 的 payload 字段保存在客户端,通过 RSA 加密 ...

  6. 深入理解Aspnet Core之Identity(3)

    主题 账户管理一个比较常见的功能就是密码强度策略,Identity已经内置了一个通用的可配置的策略,我们一般情况下可以直接拿来用即可.本篇我会介绍一些Identity内置的密码策略类:Password ...

  7. [.net]基元线程同步构造

    /* 基元线程同步构造 用户模式构造: 易变构造(Volatile Construct) 互锁构造(Interlocked Construct):自旋锁(Spinlock) 乐观锁(Optimisti ...

  8. windows下redis安装及应用

    一.下载安装Redis(windows版本) 1.下载地址:https://github.com/MicrosoftArchive/redis/releases 2.安装: 1)打开运行窗口,输出cm ...

  9. Vue 进阶之路(十)

    之前的文章介绍了 vue 的组件化,本章我们来看一下 vue 中组件的原生事件. <!DOCTYPE html> <html lang="en"> < ...

  10. 廖雪峰Python学习笔记——使用元类

    元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是“一个类的类”.任何实例是它自己的类都是元类. class demo(object): pass obj ...