1、 数组的创建
1)、names=Array.new() / names = Array.new(20) / names = Array.new(5,”mac”) /
names =Array.new(10){|e| e= e*1} #names = [0,1,2,3,4,5,6,7,8,9]
2)、names=[]
3)、names=Array(5)
4)、names = Array.[](1,2,3,4,5)
5)、names = Array[1,2,3,4,5]
6)、names = Array(0..9)
2小知识:
叹号! 一般用到这个时候,是修改自身
问号? 一般用到这个的时候,时返回布尔
符号[] 代表是数组
符号{} 代表散列
3、常见API总结
编号 |
API名称 |
说明 |
示例 |
1 |
array & other_array |
数组与,返回两个数组的交集 |
[1,2,3] & [2,3,4,5] ->[2,3] |
2 |
array * int array * str |
复制数组 |
[1,2]*2 -> [1,2,1,2] [1,2,3,4]*”+” -> “1+2+3+4” |
3 |
array + other_array |
两个数组相加,但是不排除重复元素 |
[1,2,3,4]+[2,3,4,5] -> [1,2,3,4,2,3,4,5] |
4 |
array - other_array |
返回第一个数组与第二个数组不同的元素 |
[1,2,3,4]+[2,3,4,5] -> [1] |
5 |
array <=> other_array |
比较两个数组,返回值为_1、0、1 |
[1,2,3,4] <=> [2,3,4,5] -> -1 [2,3,4] <=> [2,3,4] -> 0 [2,3,4,5] <=> [1,2,3,4] -> 1 |
6 |
array | other_array |
追加元素,但是排除重复元素 |
[1,2,3,4,5] | [3,4,5,6,7] -> [1,2,3,4,5,6,7] |
7 |
array << obj |
追加元素,但是不排除重复元素 |
[1,2,3,4,5] <<5 ->[1,2,3,4,5,5] |
8 |
array == other_array |
判断两个数组是否相等 |
[1,2,3,4] == [1,2,3,4] -> true [1,2,3,4] == [1,2] -> false |
9 |
array.slice(start,length) array.slice(range) |
截取数组,或者返回给定位置的元素 |
[1,2,3,4,5,6].slice(0,2) -> [1,2] [1,2,3,4,5,6].slice(2) -> 3#这边超出数组的长度会返回nil |
10 |
array.abbrev(pattern = nil) |
|
|
11 |
array.assoc(obj) |
从数组的每个元素中搜寻制定对象 |
[[1,2,3],[4,5,6],[2,3,4]].assoc(2) ->[2,3,4] #返回所有元素中第一个匹配的元素 |
12 |
array.at(index) |
返回制定位置的元素,如果指定位置超过了数组的长度则返回nil |
[1,2,3,4,5,6,2].at(2) -> 3 |
13 |
array.clear |
清空数组 |
[1,2,3,4].clear -> [] |
14 |
array.collect { |item| block }
|
collect的作用跟map类似,执行一个black来返回一个新的数组 |
[1,2,3,4,5].map{|item| item+1} -> [2,3,4,5,6] [1,2,3,4,5].collect{|item| item+1} -> [2,3,4,5,6] |
15 |
array.compact array.compact! |
删除值为nil的元素后生成新数组并返回它 |
[1,2,3,nil,nil,5,6].compact -> [1,2,3,5,6] |
16 |
array.concat(other_array) |
合并两个数组,但是不删除重复元素 |
[1,2,3,4,5].concat([3,4,5,6,7,8]) -> [1,2,3,4,5,3,4,5,6,7,8] |
17 |
array.delete(obj) |
删除指定元素,如果该元素有重复元素则全部删除 第二种带block的方法是,当找不到要删除的元素是,返回block中的内容 |
[1,2,3,4,5,2,2,2].delete(2) -> [1,3,4,5] #该方法的返回值为删除了的元素
[1,2,3,4,5,6].delete(8){2} -> 2 |
18 |
array.delete_at(index) |
删除指定元素,如果超出数组长度返回nil |
[1,2,3,4].delete_at(2) -> 3 |
19 |
array.delete_if { |item| block } |
删除满足块操作的元素 |
[1,2,3,4,5,6].delete_if{|item| item%2==0} -> [1,3,5] |
20 |
array.each { |item| block } |
循环迭代数组 |
[1,2,3].each {|x| x+1 } |
21 |
array.each_index { |index| block } |
|
[1,2,3].each_index {|index| index+1 } |
22 |
array.empty? |
判断一个数组是否为空 |
[1,2,3].empty? -> false |
23 |
array.eql?(other) |
判断两个数组是否相等 |
[1,2,3].eql?([1,2,3]) -> true |
24 |
array.fetch(index) |
fetch匹配的是具体的元素,和index方法正好相反 |
[1,2,3,4,5].index(5) -> 4 [1,2,3,4,5].fetch(4) -> 5 |
25 |
array.fill(obj) array.fill(obj, start [, length]) [or] |
填充数组,是针对一个已经定义的数组。 |
[1,2,3,4,5].fill(6) ->[6,6,6,6,6] [1,2,3,4,5].fill(6,2,3) ->[1,2,6,6,6] |
26 |
array.first |
返回第1个或者前n个元素。 |
[1,2,3,4,5].first -> 1 [1,2,3,4,5].first(3) -> [1,2,3] |
27 |
array.flatten array.flatten! |
使数组一维化,并返回一个新的数组 |
[[1,2,3],[[4,5]],[[[6,7]]]].flatten -> [1,2,3,4,5,6,7] |
28 |
array.frozen? |
|
|
29 |
array.hash |
对数组生成一个hash码,不知道什么玩意。 |
[1,2,3,4,5].hash -> 228052319 |
30 |
array.include?(obj) |
判断数组中是否包含某个元素 |
[1,2,3,4].include?(2) -> true [1,2,3,4].include?(5) -> false |
31 |
array.index(obj) |
返回数组中第一个==val的元素的位置 |
[1,2,3,4,5,6,2,2,2].index(2) -> 1 |
32 |
array.indexes(i1, i2, ... iN)
|
以数组的形式返回其索引值与各参数值相等的元素 |
[1,2,3,4,5,6,7,8].indexes(0,2,4) -> [1,3,5] 现在这个方法不存在了?? |
33 |
array.insert(index, obj...) |
在指定位置插入元素 |
[1,2,3,4].insert(1,5) -> [1,5,2,3,4] |
34 |
array.inspect |
返回一个可打印输出格式的数组 |
[1,2,3].inspect |
35 |
array.join(sep=$,) |
将数组按一定的分隔符连接起来 |
[1,2,3,4].join(“+”) -> “1+2+3+4” |
36 |
array.last array.last(n) |
返回数组末尾的元素 |
[1,2,3,4,5,6].last -> 6 [1,2,3,4,5,6].last(3) -> [4,5,6] |
37 |
array.length |
返回数组的长度 |
[1,2,3,4].length -> 4 |
38 |
array.map { |item| block }
|
循环迭代数组,返回迭代后的新数组 |
[1,2,3,4].map {|i| i+1} -> [2,3,4,5] |
39 |
array.nitems |
返回数组中空元素的个数 |
[1,2,nil,nil,nil].nitems -> 3 难道现在没有这个方法了? |
40 |
array.pop |
删除最后一个元素 |
[1,2,3,4].pop -> [1,2,3] |
41 |
array.push(obj, ...) |
插入元素 |
[1,2,3].push(4) -> [1,2,3,4] |
42 |
array.rassoc(key) |
遍历数组每个元素(元素必须是数组), 匹配索引为 1 的值是否与查找的字符相 等,返回第一个相等的元素 |
a = [[15,1], [25,2], [35,2]] p a.rassoc(2) » [25, 2]
|
43 |
array.reject { |item| block } |
循环迭代数组 |
|
44 |
array.replace(other_array) |
替换数组 |
a=[“a”,”b”] a.replace([“x”,”y”,”z”]) -> [“x”,”y”,”z”] |
45 |
array.reverse array.reverse! |
翻转数组 |
[1,2,3,4].reverse -> [4,3,2,1] |
46 |
array.rindex(obj) |
返回最后一个相等的元素的索引值 |
a=[“a”,”b”,”b”,”b”,”c”] a.rindex(“b”) -> 3 |
47 |
array.shift |
删除数组中的第一个元素,并删除它 |
[1,2,3,4].shift -> 1 |
48 |
array.slice(index) array.slice(start, length) |
把当前数组切片 |
[1,2,3,4,5].slice(3) -> 4 [1,2,3,4,5,6].slice(3,5) ->[4,5,6] |
49 |
array.sort array.sort { | a,b | block } |
数组排序 |
[4,3,2,1].sort() -> [1,2,3,4] [7,3,4,8,1,2].sort {|x,y| xóy} |
49 |
array.to_a |
返回自己 |
[1,2,3,4].to_a -> [1,2,3,4] |
50 |
array.to_ary |
同样返回自己 |
[1,2,3,4].to_ary -> [1,2,3,4] |
51 |
array.to_s |
将数组转换为字符串 |
[1,2,3,4].to_s -> “[1,2,3,4]” |
52 |
array.uniq |
删除数组中重复的元素 |
[1,2,3,2,2,2].uniq -> [1,2,3] |
53 |
array.unshift(obj, ...) |
在数组第一个元素前添加元素 |
[1,2,3,4,5].unshift(0) -> [0,1,2,3,4,5] |
54 |
array.values_at(selector,...) |
|
[1,2,3,4,5].value_at(3) 没有这个方法了吗??? |
55 |
array.zip(arg, ...) |
打包数组 |
a=[1,2,3,4] b=["a","b","c","d"] c=a.zip(b) -> [[1, "a"], [2, "b"], [3, "c"], [4, "d"]] |