如何替换数组中的元素?如何替换数组的元素?
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