说我有一个像这样的数组:
array_1 = [0, 0, 1, 2, 3, 0]
另一个像这样:
array_2 = [4, 5, 6]
我如何创建这样的数组,使得中的每个0都array_1
被替换为?的第一个和后续元素array_2
?
[4, 5, 1, 2, 3, 6]
也就是说,每次0
在第一个数组中遇到a时,我们都希望将其替换为的结果array_2.shift
。
这是一个较短的方法,但是它的shift方法将就地修改array_2。
array_1.map {|x| x == 0 ? array_2.shift : x}
以下代码使用带有外部迭代的枚举器对象,并且不会修改任何原始数组。
e = array_2.each
array_1.map {|x| x == 0 ? e.next : x}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句