仅在嵌套数组上使用`Array#join`

时间:2016-02-24 03:34:39

标签: arrays ruby

我有一个数组数组。每个子阵列的第二个元素是一个数组:

arr = [
  ["val1", ["The cat", "3"]],
  ["val2", ["Big", "Another", "6"]],
  ["val3", ["343"]]
]

我想转换数组,以便第三个嵌套级别的数组分别连接成一个由空格和逗号分隔的字符串,如下所示:

[["val1", "The cat, 3"], ["val2", "Big, Another, 6"], ["val3", "343"]]

如何仅在嵌套数组上调用join

4 个答案:

答案 0 :(得分:2)

arr.map{|e, a| [e, a.join(", ")]}
# => [["val1", "The cat, 3"], ["val2", "Big, Another, 6"], ["val3", "343"]]

答案 1 :(得分:1)

array

执行以下操作
array.map {|el| el.flatten}

编辑:根据您的更新,您可以按如下方式完成深度嵌套数组的加入:

array.map {|x| x.map {|y| y.is_a?(Array) ? y.join(', ') : y}}

答案 2 :(得分:1)

map and flatten是你的朋友!

a.map(&:flatten)

答案 3 :(得分:0)

你可以通过在循环中连接它来完成它。

arr = [["val1", ["The cat", "3"]], ["val2", ["Big", "Another", "6"]], ["val3", ["343"]]

arr.map{|a| [a.first] + a.last}
#=> [["val1", "The cat", "3"], ["val2", "Big", "Another", "6"], ["val3", "343"]]

或者只是内部数组中的flatten

arr.map(&:flatten)