我正在寻找一种方法来比较两个数组,同时考虑它们的元素位置,并基于这种比较创建一个新数组。
例如:
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"` 在那个位置上;否则 `"99"` .
有什么优雅的方法可以做到这一点吗?
1条答案
按热度按时间2nc8po8w1#
你可以用
zip
要以成对方式组合元素,请执行以下操作:然后,这些对就可以
map
-输出到所需的输出,例如:arr_1.zip(arr_2).map { |a, b| (a == "1" || b == "1") ? "1" : "99" }
=> ["1", "1", "99", "1", "99", "99", "1", "1"]