如何在Ruby中成对比较两个数组



我正在寻找一种方法来比较两个数组,同时考虑它们元素的位置,并基于该比较创建一个新数组。

例如:

arr_1      = [ "1", "1", "99", "1",  nil,  "",  "1",  ""]
arr_2      = ["99",  "", "99", nil,  nil,  "", "99", "1"]
arr_result = [ "1", "1", "99", "1", "99", "99", "1", "1"]

arr_result创建如下:如果在同一位置,任一数组中的一个元素是"1",则新数组将在该位置具有"1";否则为CCD_ 4。

有什么优雅的方法可以做到这一点吗?

您可以使用zip以成对的方式组合元素:

arr_1.zip(arr_2)
#=> [["1", "99"], ["1", ""], ["99", "99"], ["1", nil], ...]

然后可以对这些对进行map-ed至所需输出,例如:

arr_1.zip(arr_2).map { |pair| pair.include?("1") ? "1" : "99" }
#=> ["1", "1", "99", "1", "99", "99", "1", "1"]

CCD_ 7检查该对是否包含CCD_。如果是,则其结果为"1",否则为"99"。(使用三元运算符(

您也可以分别检查每个值:

arr_1.zip(arr_2).map { |a, b| (a == "1" || b == "1") ? "1" : "99" }
#=> ["1", "1", "99", "1", "99", "99", "1", "1"]

相关内容

  • 没有找到相关文章

最新更新