ruby陣列和雜湊學習筆記

2021-08-27 19:17:23 字數 2940 閱讀 5654

一.陣列

1.陣列的定義

a = array.new     #定義乙個陣列a

b = array.new(5) #定義乙個含5個nil元素的陣列

c = array.new(5,1) #定義乙個含5個1元素的陣列

d = #定義乙個空陣列d

2.陣列的運算

<< :追加元素

+ :串聯方法

- :陣列差集

& :陣列交集

| :陣列並集

* :重複陣列,如果*後面是整數,則返回重複整數次的陣列,如果是字串,則返回重複使用該字串連線陣列。

[1,2] << 3       #[1,2,3]

[1,2] + [1,2] #[1,2,1,2]

[1,2,3] - [3,4] #[1,2]

[1,2,3] & [3,4] #[3]

[1,2,3] | [3,4] #[1,2,3,4]

[1,2] * 2 #[1,2,1,2,1,2]

[1,2] * '--' #1--2

3.陣列常用方法

a = [1,2,3,4,5,6]

a[1] #2

a[0,2] #[1,2,3]

a[0..2] #[1,2,3]

a[-2,2] #[5,6]

a[2] = 7 #陣列變成[1,2,7,4,5,6]

a[0,2] = [8,9,10] #陣列變成[8,9,10,4,5,6]

陣列具有所有enumerable模組所提供的方法:

a = [1,2,3,4,5]

a.find_all #[2,4]

a.max #5

a.include?(5) #true

a.inject #15

其他的方法:

ary.size或ary.length:返回陣列的大小(長度);

ary.concat(other_array):將other_array的元素附加到ary中;

ary.clear:清空陣列;

ary.delete(obj):刪除陣列中與obj相等的元素,如果找到則返回obj,否則返回nil;

ary.delete_at(index):刪除指定下標處的元素;

ary.delete_if:刪除指定條件的元素;

ary.first和ary.last:返回陣列的第乙個元素/最後乙個元素;

ary.compact:返回乙個陣列的副本,並刪除其中的nil元素;

ary.flattern:如果ary中包含的元素為陣列,將不斷遞迴合併,返回乙個值包含基本元素的陣列;

[1,[2,3],[4,[5,6]],7].flattern     #[1,2,3,4,5,6,7]
ary.index(obj):返回陣列中第乙個等於obj元素的下標;

ary.insert(index,obj):在指定位置插入物件到陣列中;

ary.join(separator):合併陣列為乙個字串,類似與「*」;

ary.pop和ary.shift:刪除陣列中最後乙個元素/第乙個元素;

ary.push(obj):類似於《方法,將obj新增到陣列中;

ary.replace(other_array):使用other_array替換掉ary中的內容;

ary.reverse:返回乙個陣列反序ary中的元素。

二.雜湊hash

1.定義hash

h = hash.new

h = hash[1=> 'a',2=> 'b']

h =

2.取值賦值

h = 

h[1] #a

h['2'] #b

h[2] #nil

h['2'] = 'c'

h['a'] = 'd'

h #

3.hash常用方法

hsh.clear:清空hash

hsh.delete(key):刪除hash中鍵key的項;

hsh.delete_if:根據指定條件刪除元素;

hsh.has_key?(key):判斷hash中是否包含給定的鍵key;

hshhsh.has_value?(value):判斷hash中是否包含給定的值value;

hsh.index(value):返回hash中值為value的鍵,如果有多個只返回第乙個,沒有返回nil;

hsh.invert:返回逆轉hash的鍵和值的新hash;

hsh.keys:返回hash的鍵組成的陣列;

hsh.values:返回hash的值組成的陣列;

hsh.values_at(keys):返回給定鍵對應的值組成的陣列;

a = 

a.values_at(1,2,3) # ['a','b',nil]

hsh.length:返回hash中元素的個數;

hsh.merge(other_hash):合併兩個hash,重複的鍵,other_hash的對應值將hsh的值覆蓋;

hsh.replace(other_hash):使用other_hash中的值替換hsh中相同鍵的值;

hsh.to_a:將hash轉換為陣列。

4.查詢和迭代

hsh = 

hsh.find_all #[['c',13],['a',2]]

hsh.max #返回值最大的元素

hsh.sort_by #按鍵排序

hsh.sort_by #按值排序

Ruby的陣列和雜湊對比

相同點 都是帶索引的集合。都是用來儲存物件集合的。都可以通過鍵來訪問。都可以動態增加記憶體空間來儲存新元素。都能儲存任何型別的物件。不同點 陣列的鍵是整數,雜湊可以是任何物件。陣列訪問效率更高,雜湊訪問更靈活。陣列用方括號來建立和初始化,雜湊用花括號 來建立和初始化。各自特點 陣列array a a...

ruby陣列與雜湊表

q中定義的字串,不加分號 如 hello 與 q hello 表示同一字串 w表示陣列,不對變數進行替換 w表示陣列,對變數進行替換 雜湊錶用 序列進行分隔 irb main 001 0 w fred wilma barney betty great gazoo fred wilma barney ...

Ruby學習筆記3(字串,陣列,雜湊)

支援 在乙個雙引號括起的字串內,轉義字元會被解析。在乙個單引號括起的字串內,轉義字元不會被解析,原樣輸出。在字串中使用 資料標籤來輸出ruby表示式的值。還支援使用 q和 q來引導的字串 desc1 q desc2 q ruby 的字串可以使用 和 puts desc1 ruby 的字串可以使用 和...