iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0

陣列Array

陣列是一種基本的資料結構,在Ruby的陣列能夠容納各種型別的物件。
所以不管你是要放字串、數字、雜湊還是布林值都是可以的

arr = [‘你好’, 123, {}, true]

陣列與字串一樣,能夠串接與重複

> arr = [1,2,3]
> arr +  [1,2,3] + [“hello”]
#=> [1, 2, 3, 1, 2, 3, "hello"]

建立Array

先來學學怎麼建立陣列,其實非常簡單!
我們可以使用Array.new又或著[]

> Array.new       	 	#=> []
> Array.new(5)  	 	#=> [nil, nil, ni, nil, nill]
> Array.new(5,’cat’)   	#=> [“cat", "cat", "cat", "cat", "cat”]

> arr = []       		#=> []
> arr = [1,2,3]			#=> [1,2,3]

基本操作

首先要先認識陣列元素中的位置
arr = [1,2,3,4,5] 為例,依照元素順序的位置號碼是 0,1,2,3,4

> arr = [1,2,3,4,5]

> arr[0]		# 1
> arr[1]		# 2
> arr[-1]		# 5		取倒數第 1 位置的元素

更多操作

> arr = [1,2,3,4,5]

> arr[1,2]		# [2, 3] 		從位置 1 開始,依序取 2 個元素
> arr[0..4]	    # [1, 2, 3, 4]	取第 0 到第 4 位置的元素
> arr[-2,2]	    # [4, 5]		倒數第 2 個位置取開始,依序取 2 個元素
> arr[-2..-1]	# [4, 5]		取倒數第 2 到倒數第 1 位置的元素

也可以替換或是符號<<塞元素進去

> arr = [1,2,3,4,5]
> arr[0] = “Hi”    	 # [Hi,2,3,4,5] 		把第 1 個元素改成字串 Hi
> arr << 100       	 # [Hi,2,3,4,5,100] 	新增元素進去,會從最後面開始增加

合併+ v.s. 差異-

> arr1 = [1,2,3]
> arr2 = [4,5,6]
> arr1 + arr2  		# [1,2,3,4,5,6]
> arr1 = [1,2,3,4,5,6]
> arr2 = [4,5,6]
> arr1 - arr2  		# [1,2,3]

陣列.methods

陣列得方法很多,也沒辦法一次說完,就簡單拿幾個常見的方法

  • each 迭代陣列裡面元素,可以對元素個別作處理 << 超常用!
arr = []

[*1..10].each do |num|
  arr << num if num.even?
end

p arr    # [2, 4, 6, 8, 10]
  • select 選擇陣列中滿足條件的元素,並且回傳一組新的陣列
p [1,2,3,4,5].select { |num| num.odd? }    # [1, 3, 5]
  • map 對陣列中的每一個元素進行處理之後,並且回傳一組新的陣列
p [1,2,3,4,5].map { |num| num + 2 }    # [3, 4, 5, 6, 7]
  • reduce 對陣列中的每一個元素進行運算,並且回傳一個值
p [1,2,3,4,5].reduce(0) { |sum, n| sum + n }    # 15
  • sample 隨機取樣
p [1,2,3,4,5].sample(3)    # [1,2,5] 隨機取 3 個值
  • count 計算陣列中所指定的元素有幾個
p [1,1,2,2,2,2,3,3,3,3,3,3].count(3)    # 6
  • empty? 判斷是否為空陣列
[].empty?    # true

大概是這樣吧!方法實在太多,如果想要了解更多可以看文件喔!


參考連結:
小鳥的隨身【Ruby 學習筆記 — 05】陣列(Array)
為你自己學 Ruby on Rails

最近天氣轉涼
請各位叔叔阿姨大哥大姐帥哥美女大小朋友們注意身體
不要像我這隻菜鳥一樣感冒了QQ
先睡覺,各位晚安


上一篇
Day11 | 引數Argument
下一篇
Day13 | 你好,我是 Hash 雜湊 哈希
系列文
從色彩繽紛到只看亂碼日子,學程式從 Ruby 出發!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言