【发布时间】:2017-01-31 18:40:32
【问题描述】:
只是想知道是否有其他替代方法可以将数组中的元素从
[[“时间”,“2016 年 10 月 1 日”],[“消息”,“测试消息”], [“主机”,“本地主机”]]
到
["time=Oct-1-2016","message=test message","host=localhost"]
我已经确定了array.map {|k,v| "#{k}=#{v}"},只是想知道是否有其他方法可以在不使用地图功能的情况下实现上述目标?谢谢哟!
【问题讨论】:
-
仍然使用
map你也可以:arr.map {|s| s.join('=')}。 -
是的,我确实把 k,v 部分煮过头了 - 谢谢@sagrpandya82
-
当然:
[ ["time","Oct-1-2016"], ["message","test message"], ["host","localhost"] ].each_with_object([]) { |a,b| b << a.join('=') },但比简单的map更麻烦。 -
当您添加“不使用地图功能”之类的愚蠢要求时,您需要解释原因,因为答案可能会有所不同。 “我正在学习,我们不应该使用它”,“我是 Haskell 幸存者,这三个并排的字母让我更加恼火”,“我重新定义了
map以始终返回false和我需要帮助栀子花把我的奶嘴当作人质”有截然不同的反应。map是工作的最佳工具;因此,如果没有它,您将面临障碍。 -
如果你的最终目标是生成一个查询字符串,并且由于你已经标记了这个 Rails,你可能会对 ActiveSupport 与
Hash混合的to_param感兴趣:array.to_h.to_param => "host=localhost&message=test+message&time=Oct-1-2016"。否则,完全不清楚为什么要对您的问题施加“不使用map”之类的限制。
标签: arrays ruby ruby-on-rails-3