找出2个数组的差异
Finding the differences in 2 arrays
在Ruby中是否有更优雅的方法来完成以下操作?
array_1 = [1,2,3]
array_2 = [3,4,5]
(array_1 - array_2).each do |num|
some_method_z(num)
end
(array_2 - array_1).each do |num|
some_method_x(num)
end
例如--希望能够做类似的事情:
difference_1, difference_2 = ruby_method(array_1, array_2)
相当于:
difference_1 = array_1 - array_2
difference_2 = array_2 - array_1
您可以按照以下方式编写自己的方法:
def ruby_method(array_1, array_2)
[array_1 - array_2, array_2 - array_1]
end
这将 return 一个具有 2 个差异的数组,但您可以完全按照您提到的方式在调用的左侧将其解压缩为 2 个单独的变量:
difference_1, difference_2 = ruby_method(array_1, array_2)
当您使用 array_1 - array_2 可能会在您的情况下给出不合适的结果,
假设你有,
array_1 = [1, 2, 3]
array_2 = [1, 3, 4]
array_1 - array_2 = [2]
所以在你的情况下,你需要使用以下内容
difference_1 = array_1.map.with_index { |v, i| v-array_2[i] }
difference_2 = array_2.map.with_index { |v, i| v-array_1[i] }
如果您想将其添加为方法
def find_difference(array_1, array_2)
difference_1 = array_1.map.with_index { |v, i| v-array_2[i] }
difference_2 = array_2.map.with_index { |v, i| v-array_1[i] }
return [difference_1, difference_2]
end
你可以打电话,
difference_array = find_difference(array_1, array_2)
在Ruby中是否有更优雅的方法来完成以下操作?
array_1 = [1,2,3]
array_2 = [3,4,5]
(array_1 - array_2).each do |num|
some_method_z(num)
end
(array_2 - array_1).each do |num|
some_method_x(num)
end
例如--希望能够做类似的事情:
difference_1, difference_2 = ruby_method(array_1, array_2)
相当于:
difference_1 = array_1 - array_2
difference_2 = array_2 - array_1
您可以按照以下方式编写自己的方法:
def ruby_method(array_1, array_2)
[array_1 - array_2, array_2 - array_1]
end
这将 return 一个具有 2 个差异的数组,但您可以完全按照您提到的方式在调用的左侧将其解压缩为 2 个单独的变量:
difference_1, difference_2 = ruby_method(array_1, array_2)
当您使用 array_1 - array_2 可能会在您的情况下给出不合适的结果,
假设你有,
array_1 = [1, 2, 3]
array_2 = [1, 3, 4]
array_1 - array_2 = [2]
所以在你的情况下,你需要使用以下内容
difference_1 = array_1.map.with_index { |v, i| v-array_2[i] }
difference_2 = array_2.map.with_index { |v, i| v-array_1[i] }
如果您想将其添加为方法
def find_difference(array_1, array_2)
difference_1 = array_1.map.with_index { |v, i| v-array_2[i] }
difference_2 = array_2.map.with_index { |v, i| v-array_1[i] }
return [difference_1, difference_2]
end
你可以打电话,
difference_array = find_difference(array_1, array_2)