ruby常用方法小記 --Array篇

本文介绍了 Ruby 中数组的各种实用方法,包括交集、比较、收集、压缩、展平、包含性检查、连接、打包、推入、拒绝、删除条件、反转、切片和去除重复项等功能,并提供了具体的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=large][b]Class Array < Object[/b][/size]

實例方法

[b]&[/b]
arr & other_array -> an_array

交集

[b]<=>[/b]
arr<=>other_array-> -1,0,1

比較---根據數組小于,等于或大于other_array,分別返回-1,0或1。每個數組中的每個對象都被比較.如果任何值都不相等,那么這次比較多結果將作為返回值返回.如果所有值都相等,則返回值由數組長度的比較結果確定.因此,根據Array#<=>當且僅當兩個數組長度相同且對應元素分別相等時才認為它們相等

["a", "a", "c"] <=> ["a", "b", "c"] -> -1

[1, 2, 3, 4, 5, 6] <=> [1, 2] -> 1


[b]collect![/b]
arr.collect!{|obj|block}-->arr

對arr的每個元素調用block,并用block的返回值去替換原元素.參見

a = %w(a b c d )
a.collect!{|x| x + "!"}
a


[b]compact![/b]
arr.compact! -> arr 或 nil


刪除arr中所有的nil元素.如果沒有改變內容,則返回nil


a = ["a", nil, "b", nil, "c", "d"]
a.compact
a
a.compact!
a


[b]each_index[/b]
arr.each_index{|index|block} -> arr

除了傳遞到是元素的下表而不是元素本身之外,與Array#each相同

[b]flatten[/b]
arr.flatten->an_array

返回一個新數組,該數組由原數組元素(遞歸)平鋪而成.

a = [1, 2, 3, 4, 5, 6]
t = [4, 5, 7, 9]
b = [a, t, 6,7,8]
b.flatten


[b]include?[/b]
arr.include?(obj)->true或false

如果所給對象出現在數組中(也就是說如果數組的任何對象 == obj),則返回true,否則返回false.
a = %w(a, b, c)
a.include("b") -> true
a.include("g") -> false


[b]join[/b]
arr.join(sqparator=$,)->str

將數組中的每個元素連接成一個字符串,使用分隔符來分割每個元素,并返回該字符串.
%w(a b c).join 
=> "abc"
%w(a b c).join("囧")
=> "a囧b囧c"


[b]pack[/b]
arr.pack(template)->binary_string


根據模板template中的指令將arr的內容打包成二進制字節序.指令A,a和Z后跟一個計數符,該計數符說明了生成字段的寬度.其余的指令也可以后跟一個計數符以表明被轉換的數組元素的個數.如果計數符是星號(*),則剩余的所有數組元素將被轉換."sSiIlL"指令中的任何一個都可后跟一個下劃線(_)以使用底層平臺的本地大小來表示指定的類型;否則使用平臺無關的大小.模板字符串的空格將被忽略.以#開頭到下一個新行或字符串結尾的注釋也被忽略.

a = %w(a b c)
n = [65, 66, 67]
a.pack("A3A3A3")
=> "a b c "
a.pack("a3a3a3")
=> "a\000\000b\000\000c\000\000"
n.pack("ccc")


[b]push[/b]
arr.push(<obj>*)->arr

將給定參數添加到數組中.
a = %w(a b c)
a.push %w(d e f)
=> ["a", "b", "c", ["d", "e", "f"]]


[b]reject![/b]
arr.reject!{block}item->arr或nil

等價于Array#delete_if,但如果沒做任何改變,則返回nil.

[b]delete_if[/b]
arr.delete_if{|item|block} -> arr

刪除數組arr中那些能使block返回true的元素
a = %w(a b c)
a.delete_if{|x| x >= "b"}


[b]reverse[/b]
arr.reverse -> an_array

反序arr的元素,并返回新數組

[b]slice[/b]
arr.slice(int)->obj
arr.slice(start,length)->an_array
arr.slice(range)->an_array


a = %w(a b c d e f)
a.slice(2)
=>"c"
a.slice(1,2)
=> ["b", "c"]
a.slice(1..3)
=>["b","c","d"]


[b]uniq[/b]
arr.uniq->an_array


刪除arr中的重復元素,并返回結果數組,重復元素是通過使用eql?和hash比較檢測出來的.
a = %w(a a b b c)
a.uniq
=> ["a", "b", "c"]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值