我正在尝试将数组的某些元素合并到一个数组中。
我有以下内容:
arr1: ["element1":"ABC", "element1":"DEF","element1":"GHI"]
arr2: ["element2":"123", "element2":"456", "element2":"789"]
arr3: ["element3":"JKL", "element3":"MNO", "element3":"PQR"]
我正在尝试将每个第一个元素合并到一个数组中,然后是第二个元素,然后是第三个元素,以产生:
arr4: ["element1":"ABC", "element2":"123", "element3":"JKL"]
arr5: ["element1":"DEF", "element2":"456", "element3":"MNO"]
arr6: ["element1":"GHI", "element2":"789", "element3":"PQR"]
我目前的代码是:
test1 = ["element1:"+arr1[0] +', "element2:"'+ arr2[0] + ', "element3:" '+arr3[0]]
test2 = ["element1:"+arr1[1] +', "element2:"'+ arr2[1] + ', "element3:" '+arr3[1]]
test3 = ["element1:"+arr1[2] +', "element2:"'+ arr2[2] + ', "element3:" '+arr3[2]]
但是后来我弄得一团糟 - 我做错了什么?
答案 0 :(得分:3)
arr1 = ["ABC", "DEF", "GHI"]
arr2 = ["123", "456", "789"]
arr3 = ["JKL", "MNO", "PQR"]
使用Array#transpose并行分配。
arr4, arr5, arr6 = [arr1, arr2, arr3].transpose
arr4 #=> ["ABC", "123", "JKL"]
arr5 #=> ["DEF", "456", "MNO"]
arr6 #=> ["GHI", "789", "PQR"]
答案 1 :(得分:2)
Array#transpose和Array#zip为yin and yang。只要transpose
可以使用,zip
就是另一种选择。如果数组arr1
,arr2
和arr3
的大小相同(根据transpose
的要求,而不是zip
),则反之亦然。
arr1.zip(arr2, arr3)
#=> [["ABC", "123", "JKL"],
# ["DEF", "456", "MNO"],
# ["GHI", "789", "PQR"]]