用另一个数组的元素替换数组中的所有零
Replace all zeros in array with elements of another array
假设我有一个这样的数组:
array_1 = [0, 0, 1, 2, 3, 0]
还有一个是这样的:
array_2 = [4, 5, 6]
如何创建这样的数组,以便 array_1
中的每个 0 都被 array_2
的第一个和后续元素替换?:
[4, 5, 1, 2, 3, 6]
也就是每次在第一个数组中遇到0
,我们想用array_2.shift
.
的结果替换它
你可以做这样的事情,当你遇到 0
array_1.each_with_index do |val, i|
array_1[i] = array_2.shift if val == 0
end
这个比较短,但是 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}
假设我有一个这样的数组:
array_1 = [0, 0, 1, 2, 3, 0]
还有一个是这样的:
array_2 = [4, 5, 6]
如何创建这样的数组,以便 array_1
中的每个 0 都被 array_2
的第一个和后续元素替换?:
[4, 5, 1, 2, 3, 6]
也就是每次在第一个数组中遇到0
,我们想用array_2.shift
.
你可以做这样的事情,当你遇到 0
array_1.each_with_index do |val, i|
array_1[i] = array_2.shift if val == 0
end
这个比较短,但是 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}