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