Ruby - 将数组的某些元素组合成一个新数组

时间:2018-02-06 15:23:16

标签: arrays ruby

我正在尝试将数组的某些元素合并到一个数组中。

我有以下内容:

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]]

但是后来我弄得一团糟 - 我做错了什么?

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#transposeArray#zipyin and yang。只要transpose可以使用,zip就是另一种选择。如果数组arr1arr2arr3的大小相同(根据transpose的要求,而不是zip),则反之亦然。

arr1.zip(arr2, arr3)
  #=> [["ABC", "123", "JKL"],
  #    ["DEF", "456", "MNO"],
  #    ["GHI", "789", "PQR"]]