首页 > 解决方案 > Rails - 将二维数组转换为列表并返回

问题描述

我有一个这样的数组:

[["09:00",4,15],["09:00",4,15]]

我想在这样的文本区域中输出它:

"09:00",4,15
"09:00",4,15

用户可以对其进行编辑,然后我想将其转换回带有子数组的数组。

对于第一步,我可以做一个each并删除[]withgsub但这似乎不是最好的方法。然后把它变成一个数组,我需要更多的代码。

这是一种 CSV 输出,但我没有在这里处理任何文件。

标签: ruby-on-railsarraysrubyruby-on-rails-5

解决方案


为了产生输出,这样的事情可以工作:

input = [["09:00",4,15],["09:00",4,15]]

output = input
  .map { |list| list.join(",") }
  .join("\n")

puts output

打印:

09:00,4,15
09:00,4,15

然后您可以使用以下命令将其转回输入split

result = output
  .split("\n")
  .map { |line| line.split(",") }
# => [["09:00", "4", "15"], ["09:00", "4", "15"]]

正如您可能注意到的那样,问题在于数字被转换为字符串。这是因为当你在页面上打印一些东西时,你不可避免地会将它变成一个字符串,而 Ruby 不能只知道它应该是一个数字。

如果需要,您可以将第二个和第三个元素转换为数字:

result2 = result.map do |(time, num1, num2)|
  [time, num1.to_i, num2.to_i]
end

推荐阅读