Ruby 數(shù)組操作方法匯總

1、數(shù)組定義

arr1 = []

arr2 = Array.new

arr3 = ['1','2','3']

2、輸出

print arr3,"\n" ? #123

puts arr3[0] ? ? ?#1

print arr3.join(",") ?#1,2,3

3、訪問數(shù)組元素

arr1[0]

arr1[-1] ? ?#這個(gè)比較有意思,意思是最后一個(gè)的數(shù)據(jù)

arr1.first

arr1.last

arr1.max

arr1.min

arr1.length

arr1.size

4、數(shù)組操作

arr3[4] = '5' ? ? ? ? ? ? ? ? ? ?#此時(shí)arr3[3]默認(rèn)尾nil

arr3.delete_at(3) ? ? ? ? ? ? ? ?#刪除指定下標(biāo)的元素

arr3[2] = ["3a","3b","3c"] ? ? ? #可以這樣來做

arr3.delete(["3a","3b","3c"]) ? ?#可以刪除上面添加的

arr3.push('6') ? ? ? ? ? ? ? ? ? #插入元素

arr3.insert(3,"b") ? ? ? ? ? ? ? #在指定位置插入新元素

arr3<<"f"<<2 ? ? ? ? ? ? ? ? ? ? #從左至右一次加入元素

arr3.pop ? ? ? ? ? ? ? ? ? ? ? ? #刪除尾元素

arr3.shift ? ? ? ? ? ? ? ? ? ? ? #刪除首元素

arr3.clear ? ? ? ? ? ? ? ? ? ? ? #清空數(shù)組

5、數(shù)組運(yùn)算

aaa = [" aa ",4,5," bb "]

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

print aaa + bbb,"\n" ? ? ? ?# aa 45 bb 41325

print aaa*2,"\n" ? ? ? ?# aa 45 66 ?aa 45 66?

print bbb - aaa ? ? ? ? ? ?#132

print aaa | bbb,"\n" ? ? ? ?# aa 45 bb 132

print aaa & bbb,"\n" ? ? ? ?#45

print bbb.sort,"\n" ? ? ? ?#12345 排序

print aaa.reverse,"\n" ? ? ? ?# bb 54 aa 倒置

print bbb.sort.reverse,"\n" ? ? #54321 降序

1. &?

[ 1, 1, 3, 5 ] & [ 1, 2, 3 ] # => [1, 3]?

取兩個(gè)數(shù)組中都有的元素,但只取一個(gè),不重復(fù)取。?

2. *?

[ 1, 2, 3 ] * 3 # => [1, 2, 3, 1, 2, 3, 1, 2, 3]?

如果*號(hào)后面跟的是數(shù)字n,將原先數(shù)組中的所有元素重復(fù)n次,串聯(lián)起來。相當(dāng)于普通數(shù)字的乘法操作。?

[ 1, 2, 3 ] * "--" # => "1--2--3"?

如果*號(hào)后面跟的是字符串,也將返回字符串。?

3. +?

[ 1, 2, 3 ] + [1, 4, 5 ] # => [1, 2, 3, 1, 4, 5]?

簡(jiǎn)單的將兩個(gè)數(shù)組連接在一起,不刪除重復(fù)元素。?

4. -?

[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ]?

# => [3, 3, 5]?

從第一個(gè)數(shù)組中刪除所有出現(xiàn)在第二給數(shù)組中的元素。?

5. <<?

[ 1, 2 ] << "c" << "d" << [ 3, 4 ] << [3, 4]?

# => [1, 2, "c", "d", [3, 4], [3, 4]]?

在數(shù)組末尾添加新元素,也不管重復(fù)不重復(fù)。?

6. ==?

[ "a", "c" ] == [ "a", "c", 7 ] # => false?

[ "a", "c", 7 ] == [ "a", "c", 7 ] # => true?

[ "a", "c", 7 ] == [ "a", "d", "f" ] # => false?

判斷兩個(gè)數(shù)組是否相等——數(shù)組相等的前提是,數(shù)組所有元素相等,數(shù)組大小也當(dāng)然相等。?

7. |?

[ "a", "b", "c" ] | [ "c", "d", "a" ]?

# => ["a", "b", "c", "d"]?

取兩個(gè)數(shù)組中所有元素組成的集合,刪除重復(fù)元素。?

8. at?

a = [ "a", "b", "c", "d", "e" ]?

a.at(0) # => "a"?

a.at(-1) # => "e"?

a.at(5) # => nil?

取回某個(gè)索引中的元素,倒數(shù)第一個(gè)索引是-1,第二個(gè)是-2。?

9. clear?

a = [ "a", "b", "c", "d", "e" ]?

a.clear # => []?

刪除數(shù)組中的所有元素?

10. collect!?

a = [ "a", "b", "c", "d" ]?

a.collect! {|x| x + "$" } # => ["a$", "b$", "c$", "d$"]?

a # => ["a$", "b$", "c$", "d$"]?

對(duì)數(shù)組中的每一個(gè)元素進(jìn)行遍歷,block中對(duì)元素的操作將改變?cè)氐闹怠?

11. compact?

[ "a", nil, "b", nil, "c", nil ].compact # => ["a", "b", "c"]?

刪除數(shù)組中所有值為nil的元素,也即壓縮數(shù)組。?

12. concat?

[ "a", "b" ].concat( ["c", "d"] ) # => ["a", "b", "c", "d"]?

將第二個(gè)數(shù)組中的元素添加在第一個(gè)數(shù)組末尾,組成新數(shù)組。?

13. count?

[1, 2, 3, 4].count(3) # => 1?

[1, 2, 3,3, 4].count(3) # => 2?

[1, 2, 3, 4].count {|obj| obj > 2 } # => 2?

計(jì)算數(shù)組中等于某個(gè)值的元素有幾個(gè)。?

14. delete?

a = [ "a", "b", "b", "b", "c" ]?

a.delete("b") # => "b"?

a # => ["a", "c"]?

a.delete("z") # => nil?

a.delete("z") { "not found" } # => "not found"?

刪除數(shù)組中值為某個(gè)給定值的元素。?

15. each?

a = [ "a", "b", "c" ]?

a.each {|x| print x, " -- " }?

result :?

a -- b -- c --?

遍歷數(shù)組,打印元素值。?

16. each_index?

a = [ "a", "b", "c" ]?

a.each_index {|x| print x, " -- " }?

result :?

0 -- 1 -- 2 --?

遍歷數(shù)組,打印索引。?

17. empty??

[].empty? # => true?

[ 1, 2, 3 ].empty? # => false?

判斷數(shù)組是否為空。?

18. join?

[ "a", "b", "c" ].join # => "abc"?

[ "a", "b", "c" ].join("-") # => "a-b-c"?

將數(shù)組中的元素連接成字符串。如果給定參數(shù),則在每個(gè)元素直接加入該參數(shù)。?

19. last?

[ "w", "x", "y", "z" ].last # => "z"?

[ "w", "x", "y", "z" ].last(1) # => ["z"]?

[ "w", "x", "y", "z" ].last(3) # => ["x", "y", "z"]?

如果不給定參數(shù),取最后一個(gè)元素。如果給定參數(shù)n,取最后n個(gè)參數(shù)組成數(shù)組。?

20. length?

[ 1, nil, 3, nil, 5 ].length # => 5?

長度??赵豱il也算元素,計(jì)算在長度范圍內(nèi)。?

21. pop?

a = %w{ f r a b j o u s }?

a.pop # => "s"?

a # => ["f", "r", "a", "b", "j", "o", "u"]?

a.pop(3) # => ["j", "o", "u"]?

a # => ["f", "r", "a", "b"]?

返回刪除了最后n個(gè)元素后的數(shù)組。?

22. push?

a = [ "a", "b", "c" ]?

a.push("d", "e", "f") # => ["a", "b", "c", "d", "e", "f"]?

在數(shù)組末尾插入元素。?

23. replace?

a = [ "a", "b", "c", "d", "e" ]?

a.replace([ "x", "y", "z" ]) # => ["x", "y", "z"]?

a # => ["x", "y", "z"]?

用新數(shù)組替換舊數(shù)組。?

24. reverse?

[ "a", "b", "c" ].reverse # => ["c", "b", "a"]?

[ 1 ].reverse # => [1]?

反轉(zhuǎn)數(shù)組。?

25. shift?

args = [ "-m", "-q", "-v", "filename" ]?

args.shift # => "-m"?

args.shift(2) # => ["-q", "-v"]?

args # => ["filename"]?

從數(shù)組頭部刪除n個(gè)元素,并將他們返回。若刪除的是一個(gè),則返回字符串。若刪除兩個(gè)以上元素,則返回這n個(gè)組成的新數(shù)組。原數(shù)組被改變。?

26. unshift?

a = [ "b", "c", "d" ]?

a.unshift("a") # => ["a", "b", "c", "d"]?

a.unshift(1, 2) # => [1, 2, "a", "b", "c", "d"]?

在頭部加入元素,原數(shù)組元素往后移。?

27. shuffle?

[ 1, 2, 3, 4, 5, 1 ].shuffle # => [5, 1, 3, 4, 1, 2]?

將原數(shù)組隨機(jī)打亂。?

28. sort?

a = [ "d", "a", "e", "c", "b" ]?

a.sort! # => ["a", "b", "c", "d", "e"]?

a # => ["a", "b", "c", "d", "e"]?

返回排序好的數(shù)組。?

29. values_at?

a = %w{ a b c d e f }?

a.values_at(1, 3, 5) # => ["b", "d", "f"]?

a.values_at(1, 3, 5, 7) # => ["b", "d", "f", nil]?

a.values_at(-1, -3, -5, -7) # => ["f", "d", "b", nil]?

a.values_at(1..3, 2...5) # => ["b", "c", "d", "c", "d", "e"]?

一次取回多個(gè)索引位置的值。?

30. uniq?

a = [ "a", "a", "b", "b", "c" ]?

a.uniq # => ["a", "b", "c"]?

返回?cái)?shù)組中不同的元素。原數(shù)組不受影響。?

Ruby迭代器each、map、collect、inject?

說明:?

each——連續(xù)訪問集合的所有元素?

collect—-從集合中獲得各個(gè)元素傳遞給block,block返回的結(jié)果生成新的集合。?

map——-同collect。?

inject——遍歷集合中的各個(gè)元素,將各個(gè)元素累積成返回一個(gè)值。?

例子:?

def debug(arr)?

? ? puts '--------'?

? ? puts arr?

end?

h = [1,2,3,4,5]?

h1 = h?

h1.each{|v|puts sprintf('values is:%s',v)}?

h2 = h.collect{|x| [x,x*2]}?

debug h2?

h3 = h.map{|x| x*3 }?

debug h3?

h4 = h.inject{|sum,item| sum+item}?

debug h4 ? ?

結(jié)果:?

values is:1?

values is:2?

values is:3?

values is:4?

values is:5?

--------?

1?

2?

2?

4?

3?

6?

4?

8?

5?

10?

--------?

3?

6?

9?

12?

15?

--------?

15?

names = %w[ruby rails java python cookoo firebody]?

等同于:?

names = ["ruby", "rails", "java", "python", "cookoo", "firebody"]?

arr = [1,2,3]?

1) arr2 = arr.each{|element| element = element * 2} #arr與arr2仍然都等于[1,2,3] ? each返回原數(shù)組 遍歷內(nèi)對(duì)元素的更改不會(huì)保存?

2) arr2 = arr.map{|element| element = element* 2} #arr等于[1,2,3] arr2等于[2,4,6] map返回更改后的數(shù)組 遍歷內(nèi)對(duì)元素的更改不會(huì)保存?

3) arr2 = arr.map!{|element| element = element * 2} #arr與arr2都等于[2,4,6] map!返回更改后的數(shù)組 遍歷對(duì)元素內(nèi)的更改會(huì)保存?

collect 效果等于 map?

collect! 效果等于map!?

if ($ != jQuery) { $ = jQuery.noConflict(); }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,490評(píng)論 0 13
  • 在C語言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,007評(píng)論 0 2
  • 第四天 數(shù)組【悟空教程】 第04天 Java基礎(chǔ) 第1章數(shù)組 1.1數(shù)組概念 軟件的基本功能是處理數(shù)據(jù),而在處理數(shù)...
    Java幫幫閱讀 1,676評(píng)論 0 9
  • //JS數(shù)組常用方法及其應(yīng)用/** * 1.push(): 向數(shù)組尾部添加一個(gè)或多個(gè)元素,并返回添加新元素后的數(shù)組...
    李二狗的星球閱讀 602評(píng)論 0 0
  • # 數(shù)組部分 # 1.## array_chunk($arr, $size [, $preserve_key = ...
    clothTiger閱讀 1,310評(píng)論 0 1

友情鏈接更多精彩內(nèi)容