微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何成对比较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 举报,一经查实,本站将立刻删除。