Ruby Array类
生成 |
a = [1,2,3] # 字面生成 a = Array.new() # => [] 方法生成 a = Array.new(2) # => [nil, nil] a = Array.new(n) {|temp| ...} a = Array.new(2, 1) # => [1, 1] a = %w(i am a duck) # %W解析插值, %w不解析 # 元是单词字符串 # => ["i", "am", "a", "duck"] a = %i(you are also a duck) # %I解析插值, %i不解析 # 元是单词符号(symbol, :a) # => [:i, :am, :a, :duck] a = [1,2,3].to_a() # 转换
|
||||||||||||
复制 |
clone -> Array dup -> Array ● 元素不复制(指针的还是指针) ● clone也包含了frozen tainted singleton-class的内容 |
||||||||||||
索引 | a = Array.new(12, 1) 获取一个 b = a[1] b = a.at(1) b = a.slice(1) 获取子数组 b = a[1..2] b = a.slice(1..2) b = a[1...2] b = a.slice(1...2) 获取子数组, 通过首项和数组长度 b = a[1, 5] b = a.slice(1..6) |
||||||||||||
插入新元素 | b = Array.new(4, 95) a[n, 0] = b |
||||||||||||
取出多个元素 | a.values_at(n1, n2, ...) | ||||||||||||
长度 | a.length a.size |
||||||||||||
是否包含指定元素 | include?(val) -> bool | ||||||||||||
集合运算 | 并集 a | b 交集 a & b | 和 +的区别 |是集合运算,不包含重复 |
||||||||||||
序列和堆 | 序列: 先放的先拿 堆: 先放的后拿 |
||||||||||||
增加元素 |
|
||||||||||||
删除元素 |
|
||||||||||||
读取元素 |
开头: first(n) 结尾: last(n) 第二个: second() 这个不能有参数 开头开始指定个: take(n) |
||||||||||||
搜索元素
|
|
||||||||||||
主要方法 | 注:改变自己的method会改变所以参照的对象 | ||||||||||||
增加首元素 | a.unshift(n) | ||||||||||||
增加尾元素 | a.push(n) a << n | ||||||||||||
末尾添加数组 | a.concat(b) a += b | ||||||||||||
取出一部分 | a[n], a[m...n], a[m..n], a[n, length] a[n] 取出第n个 a[m...n] m<= i a[m..n] m<= i <=n a[0..2] a[0] a[1] a[2] 包含右边 a[n, length] 从n开始,获取length个元素 相当于 a.slice(...) a.slice!(...) |
||||||||||||
删除nil | a.compact() 去除nil | ||||||||||||
去掉所有n | a.delete(n) 去除所有n | ||||||||||||
删掉第n+1个 | a.delete_at(n) 去除第n+1个 | ||||||||||||
满足条件时删除 |
删除返回true的 a.delete_if do |temp| # 总是返回自身 |
||||||||||||
去除重复 | a.uniq() a.uniq!() |
||||||||||||
读取并删除首元素 读取并删除尾元素 |
a.shift() a.pop() |
||||||||||||
加工原数组 |
a.collect {|temp|
...} 注: map, collect是同一个方法 返回值作为新元素, 不返回则为nil |
||||||||||||
填充新值 | a.fill(value) a.fill(value, begin) a.fill(value, begin, len) a.fill(value, n..m) |
||||||||||||
展开所有子集合 | a.flatten() a.flatten!() |
||||||||||||
倒转 | a.reverse() a.reverse!() |
||||||||||||
排序 | a.sort() a.sort!() a.sort {|temp| ...} a.sort! {|temp| ...} sampe = target.sort { |a, b| b.contents.count <=> a.contents.count } |
||||||||||||
通过某个值排序 | a.sort_by {|temp| ...} a.sort_by! {|temp| ...} 注意: 从小到大排(升序) 元素变成返回值 例子: a.sort_by! {|temp| temp.count } |
||||||||||||
遍历 | a.each {|temp|} a.zip 带索引 从0开始 a.each_with_index {|temp, index|} 从n开始 a.each.with_index(n) {|temp, index|} |
||||||||||||
获取字符串 |
a.join(sep="") 按将数组内容按sep为分割连结成字符串 [1, 2, 3].join('/') # '1/2/3' |
||||||||||||