Ruby Array的常用函数

1、  将元素添加到数组

<<:将元素追加到最后

unshift:将元素添加到数组开头

push:将元素追加到最后

例:

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

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

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

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

 

2、    从开头或结尾的数组元素删除

pop:将数组中的末尾的元素取出并删除。

例:

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

p a.pop                                    #=> 10

p a.pop                                    #=> 5

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

 

3、  提取一个子数组

slice或 []或slice!(会改变原来的数组)

例:

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

p a[0,2]                                                       #=>[1, 2]    0为偏移量,2为长度

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

p a.slice(0,2)                                               #=> [1, 2]    0为偏移量,2为长度

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

 

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

p a                                                               #=> [3,4,5]

 

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

p a                                                                  #=>[3]

 

4、   填充任何数组的值
fill
:向数组填充任意元素。这种方法会改变原来数组元素。

例:

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

a.fill(255, 2,2) #=> [1, 2, 255, 255, 5]     #在数组的第二个位置填充2个255

a.fill(0, 1..2) #=> [1, 0, 0, 255, 5]        #将数组1,2位置置成0

 

5、  清空数组
clear
方法清空数组所有元素。

 

例:

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

a.clear                                               #=> []

p a                                                      #=>[]

 

6、   连接数组

+ 或者 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]

 

7、   数组的交集与并集

|:并集     &:交集 

例:

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]

 

8、   flatten将多维数组转换为一维数组

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

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

 

9、   数组元素排序

sort:将数组元素按从小到大的顺序排列,并返回排序后的结果,但数组本身排列顺序未改变

sort!:数组本身被改变

例:

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

                                                                #将a的每个分量分割,按分割后的第2个分量作比较

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

 

10、             反转数组reverse,reverse!(与字符串反转的方法相同)

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]

 

11、             删除指定位置的数组元素  delete_at

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]

 

12、             删除匹配元素  delete

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"

 

13、             删除重复元素uniq

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

 

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

reject(数组本身无变化),reject!,delete_if(改变原数组)

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

 

15、             数组中提取指定条件的元素  select(不改变原数组)

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

 

16、             查找数组元素index

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

 

p a.index("apple")                                   #=> 0

p a.index(10)                                              #=> 1

pa.index(["lemon","vine"])                    #=> 3

p a.index("fruit")                                       #=>nil

 

17、             搜索多维数组  assoc

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

p a.assoc("apple")  #=> ["apple", 100]

p a.assoc("orange") #=>["orange", 300]

p a.assoc("pear")   #=> nil

 

18、             创建新数组map(对原数组无影响) 、collect、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]]

 

19、             迭代数组中各个元素  each

["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

reverse_each反转元素迭代。

 

20、             将数组中的元素用连接符连接起来  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"

 

21、               数组取随机数rand[v1] 

rand(int):生成小于int,大于等于0的随机数

例:

rand(11):生成0-10的随机数

 

arr = [‘a’, ‘b’, ‘c’]

arr.at(rand(arr.length+1))


 [v1]数组取随机数方法简单的看一下试一下,然后给出一两个例子,在ruby1.9里新加了sample方法支持从数组直接返回随机值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值