如何替換數組中的元素?如何替換數組的元素?
a = [1,2,3,4,5]
我需要[11,22,33,44].flatten!
,將5-使a
現在變成
a = [1,2,3,4,11,22,33,44]
如何替換數組中的元素?如何替換數組的元素?
a = [1,2,3,4,5]
我需要[11,22,33,44].flatten!
,將5-使a
現在變成
a = [1,2,3,4,11,22,33,44]
不知道如果你正在尋找替代一個特定值或沒有,但這個工程:
a = [1, 2, 3, 4, 5]
b = [11, 22, 33, 44]
a.map! { |x| x == 5 ? b : x }.flatten!
這種迭代的a
的值,當它發現的5
值,它用數組b
替換該值,然後將數組平整爲一個數組。
雖然這確實起作用,但它對原始海報試圖做的事情過於複雜。使用數組切片來替換範圍是一個更直接簡單的解決方案。看[這個答案](http://stackoverflow.com/a/1704805/456814)。 – 2014-03-27 08:08:50
@Ryan McGeary我需要一個相同的方法,除了5的值我想用一個單詞「BINGO」替換數組3中的所有數字。怎麼做。我試過'ary =(0..100).to_a ary.map!{| i |我%3 == 0?我:「BINGO」}'它取代了所有除了那些可以被3 – DebRaj 2016-02-13 12:46:25
整除的作品,就像我的魅力!謝謝! – ramya 2016-03-03 06:17:22
gweg,不知道你想在這裏做什麼,但你尋找類似這個?
a = [1, 2, 3, 4, 5]
a.delete_at(4)
a = a.concat([11,22,33,44])
有許多這樣做的方法 - 我不認爲上面的代碼是特別好看。這一切都取決於原始數組中'5'的重要性。
也許你的意思是:
a[4] = [11,22,33,44] # or a[-1] = ...
a.flatten!
功能性解決方案可能是更好的,如何只:
a[0..-2] + [11, 22, 33, 44]
這將產生...
=> [1, 2, 3, 4, 11, 22, 33, 44]
+1好! !只是一個小的更正,在第一行它是'a [4]'不''[5]' – alfasin 2013-04-14 09:20:55
羅傑,固定... – DigitalRoss 2013-04-14 10:22:59
+1謝謝!當我想在數組中的一個可變位置上用兩個值替換單個元素時,函數解決方案更具適應性,即:a [0..b-1] + [val1,val2] + [b + 1 .. -1] – mm2001 2014-01-29 05:42:04
你真的不如果你只是連接在一起,必須扁平化。所以修整最後一個元素關閉第一陣列和將它們連接起來:
a = [ 1, 2, 3, 4, 5 ] #=> [1, 2, 3, 4, 5]
t = [11, 22, 33, 44] #=> [11, 22, 33, 44]
result = a[0..-2] + t #=> [1, 2, 3, 4, 11, 22, 33, 44]
一個[0 ..- 2]是一個切片的操作,通吃但所述陣列的最後一個元素。
希望它能幫助!
無論數組在哪裏,該變體都會找到5
。
a = [1, 2, 3, 4, 5]
a[a.index(5)]=[11, 22, 33, 44] if a.index(5)
a.flatten!
使用a.index的的bta版本(5)是最快的一個:比的一個Ryan McGeary更快
a[a.index(5)] = b if a.index(5) # 5.133327 sec/10^6
至少10%:
a.map!{ |x| x == 5 ? b : x } # 5.647182 sec/10^6
然而,請注意,一個.index(5)僅返回找到5的第一個索引。 所以,給出,其中5出現一次以上的陣列,結果將是不同的:
a = [1, 2, 3, 4, 5, 5]
b = [11,22,33,44]
a[a.index(5)] = b if a.index(5)
a.flatten # => [1, 2, 3, 4, 11, 22, 33, 44, 5]
a.map!{ |x| x == 5 ? b : x }
a.flatten # => [1, 2, 3, 4, 11, 22, 33, 44, 11, 22, 33, 44]
Array#delete將返回的項目或爲零。你可以使用這個知道是否要推新的價值觀
a.push 11,22,33,44 if a.delete 5
這是非常乾淨,不錯的工作! – bagofcole 2017-04-25 19:03:18
請給我們一個解釋,爲什麼你需要做到這一點,在什麼情況下,這是 – Earlz 2009-11-10 00:06:25
可能想改變標題,以我如何替換紅寶石'每個'風格迭代器中的數組元素 – peterk 2014-08-01 12:52:05