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