Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中以特定的方式组合两个数组_Ruby_Arrays_Delegates_Combinations - Fatal编程技术网

如何在Ruby中以特定的方式组合两个数组

如何在Ruby中以特定的方式组合两个数组,ruby,arrays,delegates,combinations,Ruby,Arrays,Delegates,Combinations,假设我有两个数组: a = [[1],[2],[3]] b = [[4],[5],[6]] 是否有一个选项允许我这样组合它们: a.combined_somehow(b) == [[1,4],[2,5],[3,6]] 因为我希望它能防止我在内部数组中重复。我的意思是,如果它是: a = [[1],[2],[3]] b = [[1],[5],[3]] 然后输出为:[[1]、[2,5]、[3]] require 'pp' a = [[1],[2],[3]] b = [[1],[5],[3]]

假设我有两个数组:

a = [[1],[2],[3]]
b = [[4],[5],[6]]
是否有一个选项允许我这样组合它们:

a.combined_somehow(b) == [[1,4],[2,5],[3,6]]
因为我希望它能防止我在内部数组中重复。我的意思是,如果它是:

a = [[1],[2],[3]]
b = [[1],[5],[3]]
然后输出为:
[[1]、[2,5]、[3]]

require 'pp'

a = [[1],[2],[3]]
b = [[1],[5],[3]]

def combine( a, b )
  [ a.flatten, b.flatten ].transpose.map(&:uniq)
end

pp combine( a, b )
输出

[[1], [2, 5], [3]]
输出

[[1], [2, 5], [3]]

在我看来,只是觉得有点红润:

a = [[1],[2],[3]]
b = [[4],[5],[6]]

p a.zip(b).map(&:flatten) #=> [[1, 4], [2, 5], [3, 6]]

a = [[1],[2],[3]]
b = [[1],[5],[3]]

p a.zip(b).map{|x|x.flatten.uniq} #=> [[1], [2, 5], [3]]

在我看来,只是觉得有点红润:

a = [[1],[2],[3]]
b = [[4],[5],[6]]

p a.zip(b).map(&:flatten) #=> [[1, 4], [2, 5], [3, 6]]

a = [[1],[2],[3]]
b = [[1],[5],[3]]

p a.zip(b).map{|x|x.flatten.uniq} #=> [[1], [2, 5], [3]]
我的发言如下:

a = [[1],[2],[3]]
b = [[4],[5],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2, 5], [3, 6]]

a = [[1],[2],[3]]
b = [[4],[2],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2], [3, 6]]
我的发言如下:

a = [[1],[2],[3]]
b = [[4],[5],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2, 5], [3, 6]]

a = [[1],[2],[3]]
b = [[4],[2],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2], [3, 6]]

不需要require.a.flatte.zip(b.flatte.uniq!很好,对;pp(漂亮的打印)只是打印输出。使用“.uniq!”似乎对我不起作用。。将
.uniq
放在末尾将消除重复的矩阵,而不是您所要求的内部元素。假设这是对每个内部数组的迭代。因此它将从内部数组中删除重复项。@user2128702我们不这么说,因为这不是正在发生的事情。马特是正确的。不需要要求。a.flatte.zip(b.flatte.uniq!很好,对;pp(漂亮的打印)只是打印输出。使用“.uniq!”似乎对我不起作用。。将
.uniq
放在末尾将消除重复的矩阵,而不是您所要求的内部元素。假设这是对每个内部数组的迭代。因此它将从内部数组中删除重复项。@user2128702我们不这么说,因为这不是正在发生的事情。马特是对的,6打对0.5打;当然,但是在Ruby中,总是有很多方法可以做一些事情。我觉得这种方法比其他答案更有趣,因为:1,它遵循干燥原则(展平使用一次),并且可以扩展到任意数量的数组。没错,尽管能够使用
来处理
是件好事。然而,总的来说,我倾向于同意你的观点,你的观点是它可以扩展到多个数组(通过添加单个字符!),这是锦上添花;当然,但是在Ruby中,总是有很多方法可以做一些事情。我觉得这种方法比其他答案更有趣,因为:1,它遵循干燥原则(展平使用一次),并且可以扩展到任意数量的数组。没错,尽管能够使用
来处理
是件好事。然而,总的来说,我倾向于同意你的观点,你认为它可以扩展到多个数组(通过添加单个字符!)是锦上添花。