<<:将元素追加到最后
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]
pop:将数组中的末尾的元素取出并删除。
例:
a = [1, 2, 3, 4, 5, 10]
p a.pop #=> 10
p a.pop #=> 5
p a #=>[1, 2, 3, 4]
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 #=>[]
+ 或者 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]
8、 flatten将多维数组转换为一维数组
a = [1,[2,[3,4],5],[6,7]]
p a.flatten #=>[1, 2, 3, 4, 5, 6, 7]
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]
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"]
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"]]
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
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]]
["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反转元素迭代。
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方法支持从数组直接返回随机值