Ruby 中陣列的常用操作
企業級開發中很多時候,並不是去操作專案框架,更多的時候我們是瞭解業務邏輯然後去運算元據的增刪該查。今天就Ruby 中運算元組的方法進行總結。感謝新浪小邊邊的部落格
陣列的建立和初始化
a = Array.[](1,2,3,4)
b = Array[1,2,3,4]
c = [1,2,3,4]
d = Array.new #建立一個空陣列
e = Array.new(3) #[nil,nil,nil] 初始大小3
f = Array.new(3,"xx") #["xx","xx","xx"] 初始大小3 初始值"xx"
f[0].capitalize! #=> ["Xx","Xx","Xx"]
g = Array.new(3){"yy"} #=> ["yy","yy","yy"]
g[0].capitalize! #=>["Yy","yy","yy"]
陣列元素取值和賦值
a = [1,2,3,4,5,6]
b = a[0] #=>1 等同於c = a.at[0] #=>1 取出陣列第1位的值
d = a[-2] #=>5 等同於e = a.at[-2] #=>5 取出 倒數第2位
f = a[9] #=>nil 不存在第9位
g = a.at[9] #=>nil 當第9位不存在
h = a[3,3] #=>[4,5,6] 從第4位開始,一共3個
i = a[2..4] #=>[3,4,5] 第2位後 到第4位之間
j = a[2...4] #=>[3,4] 第2位後 到第4位之前(不包括4位)
h,i,j 這幾個陣列時間的差別很小,但是結果缺完全不一樣。
a[1] = 8 #=> [1,8,3,4,5,6] 第2位被重新賦值
a[1,3] = [10,30,30] #=> [1,10,30,30,5,6] 從第2為開始替換陣列 共3位
a[0..3] = [2,4,6,8] #=> [2,4,6,8,5,6] 從第1位開始到第4位 替換
a[-1] = 12 #=> [2,4,6,8,5,12] 替換最後一位
k = [2,4,6,8,10]
k[1..2] = [3,3,3] #=>[2,3,3,3,8,10] 替換第2位~第三位之間的
k[7] = 99 #=> [2,3,3,3,8,10,nil,99] 第8位增加99 第7位不存在
m = [1,3,5,7,9]
m[2] = [20,30] #=> [1,2,[20,30],7,9] 把第3位替換為此陣列
m = [1,3,5,7,9]
m[2..2]=[20,30] #=> [1,2,20,30,7,9] 在第2位之間加入陣列
x = [0,2,4,6,8,10,12]
a = x.slice(2) #=>4 取第3位
b = x.slice(2,4) #=>[4,6,8,10] 從第3位開始取 4個數
c = x.slice(2..4) #=>[4,6,8] 從第3位..到第5位
x.first #=>0 取第1位
x.last #=>12 取最後1位
x = [10,20,30,40,50,60]
y = x.values_at(0,1,4) #=>[10,20,50] 取出值在1位 2位 5位上的數
求陣列的長度
x = ["a","b","c","d"]
a = x.length #=>4 等同於 a = x.size #=>4
y = [1,2,nil,nil,3,4]
c = y.size #=>6
d = y.length #=>6
e = y.nitems #=>4
陣列比較
a = [1,2,3,9,9]
b = [1,2,4,1,1]
c = a <=> b #=> -1 意思是 a
d = [1,2,3]
e = [1,2,3,4]
c = a <=> b #=> -1 意思是 a
定義一個比較方法class Comparable,因為陣列預設只有 <=> 現在通過自寫class增加 < > <= >=
class Comparable
def <(other)
(self <=>other) == -1
end
def <=(other)
(self < other) or (self == other)
end
def >(other)
(self <=> other) == 1
end
def >=(other)
(self > other) or (self == other)
end
end
然後就可以直接陣列 a < b 返回true
陣列排序
words = %w(the quick brown fox) #定義陣列
words.sort #=> ["brown","fox","quick","the"] #sort進行排序
正常排序
a.sort #=> ["1", "2", "3", "5", "6", "four", "three", "two"]
另一方法比較排序 返回1
a.sort{|x,y| x.to_s <=> y.to_s} #=> ["1", "2", "3", "5", "6", "four", "three", "two"]
相反比較排序 返回-1
a.sort{|x,y| x.to_s <=> y.to_s} #=> ["two", "three", "four", "6", "5", "3", "2", "1"]
檔案大小排列
files.sort{|x,y| File.size(x) <=> File.size(y)}
或
files.sort_by{|x| File.size(x)}
按名字,年齡,身高排列
lists.sort_by{|x| x.name,x.age,x.height}
按條件從陣列中查詢
x = [5,8,12,9,4,30]
查詢最大最小值x.max#=>30 x.min#=>4
a = %w[January February March April May] 新建一個陣列
正在查詢
a.grep(/ary/)
#=> ["January", "February"]
a.grep(/ary/){|i| i.length}
#=> [7, 8] 查詢出來的內容轉換為個數.
刪除陣列中的重複項 (uniq或uniq!)
刪除陣列中為nil的元素
a = [1,2,nil,3,nil,4,5]
#=> [1, 2, nil, 3, nil, 4, 5]
a.compact
#=> [1, 2, 3, 4, 5]
a.compact!
#=> [1, 2, 3, 4, 5]
a
#=> [1, 2, 3, 4, 5]
刪除陣列中指定元素
a = [10,12,14,16,18]
#=> [10, 12, 14, 16, 18]
a.delete_at(3)
#=> 16 #刪除第4位,返回被刪除物件,如果不存在返回nil
a
#=> [10, 12, 14, 18]
a.delete(10)
#=>10 #返回10
陣列的追加和拼接
x=[1,5,9]
#=> [1, 5, 9]
x << 13
#=> [1, 5, 9, 13]
x << 16 << 18
#=> [1, 5, 9, 13, 16, 18] #主要時<< 這個符號加入附加
x=[1,2]
y=[3,4]
z=[5,6]
b=y+z
#=> [3, 4, 5, 6]
b +=x
#=> [3, 4, 5, 6, 1, 2]
z.concat y
#=> [5, 6, 3, 4]
將陣列轉化為字串
words = %w(Son I am able she said)
#=> ["Son", "I", "am", "able", "she", "said"]
words.join(",")
#=> "Son,I,am,able,she,said"
陣列的倒置
a=[1,2,3]
#=> [1, 2, 3]
a.reverse
#=> [3, 2, 1]
a.reverse!
#=> [3, 2, 1]
a
#=> [3, 2, 1]
統計陣列中元素出現的次數
class Array
def count
k=Hash.new(0)
self.each{|x| k[x]+=1}
k
end
end
meal=%w[spam spam eggs ham eggs spam]
items=meal.count
#items is {"ham"=>1,"spam"=>3,"eggs"=>2}
spams=items["spam"] #3
我在實際開發中能用上的估計就是這麼多了,更多關於Ruby 陣列的操作可以檢視ruby 陣列介紹更多連結(http://blog.sina.com.cn/s/blog_629b5cc50101etnj.html)
相關文章
- Ruby中的陣列陣列
- JS常用陣列操作JS陣列
- JavaScript陣列常用操作JavaScript陣列
- Python陣列常用操作Python陣列
- JS常用陣列操作全解析JS陣列
- 命令列中的常用操作命令列
- ruby中將陣列轉換成hash陣列
- 常用的幾個陣列操作方法陣列
- JS中陣列操作JS陣列
- JavaScript中對陣列的操作JavaScript陣列
- PHP:常用PHP陣列操作函式PHP陣列函式
- 陣列的reduce操作+物件陣列的map操作陣列物件
- javascript中常用的陣列操作方法,以及是否會改變原始陣列JavaScript陣列
- JavaScript陣列中的22個常用方法JavaScript陣列
- Ruby 札記 - Ruby 集合家族之陣列(Array)陣列
- 陣列常用的方法陣列
- 陣列的常用方法陣列
- 【OpenCV教程】OpenCV中對矩陣的常用操作OpenCV矩陣
- js中陣列常用方法總結JS陣列
- 陣列操作陣列
- 對陣列的操作陣列
- 陣列的操作(2)陣列
- Scala的陣列操作陣列
- 陣列的基本操作陣列
- Ruby小記--字串轉字元陣列字串字元陣列
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- Python 列表 list 陣列 array 常用操作集錦Python陣列
- es6常用陣列操作及技巧彙總陣列
- js常用的陣列方法JS陣列
- 常用陣列方法陣列
- 陣列常用方法陣列
- 初識Java(Java陣列-陣列的基本操作)Java陣列
- 陣列的操作-變形陣列
- javascript陣列操作JavaScript陣列
- Numpy陣列操作陣列
- Scala陣列操作陣列
- Jquery陣列操作jQuery陣列
- JavaScript 陣列操作JavaScript陣列