如何解决如何成对比较Ruby中的两个数组?
我正在寻找一种方法来比较两个数组,同时考虑到它们元素的位置,并根据该比较创建一个新数组。
例如:
arr_1 = [ "1","1","99",nil,"",""]
arr_2 = ["99","1"]
arr_result = [ "1","1"]
arr_result
的创建方式如下:如果在同一位置,任一数组中的元素之一是 "1"
,则新数组将在该位置具有 "1"
;否则"99"
。
有什么优雅的方法可以实现吗?
解决方法
您可以使用 zip
以成对的方式组合元素:
arr_1.zip(arr_2)
#=> [["1","99"],["1",""],["99",nil],...]
这些对可以被 map
-ed
到所需的输出,例如:
arr_1.zip(arr_2).map { |pair| pair.include?("1") ? "1" : "99" }
#=> ["1","1","99","1"]
pair.include?("1")
检查该对是否包含 "1"
。如果是,则结果为 "1"
,否则为 "99"
。 (使用 ternary operator)
您也可以分别检查每个值:
arr_1.zip(arr_2).map { |a,b| (a == "1" || b == "1") ? "1" : "99" }
#=> ["1","1"]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。