json - Ruby - 将对象映射到一个具有固定键的数组的最佳方法
问题描述
我尝试将一些对象合并到一个数组中
我确实输出了
q = [["99","99","99"],["9"]]
o = [["b","1"],["c","3"],["d","1"],["c","30"]]
puts q.zip(o).map { |k,v| [*k,v] }.to_json
=> [["99",["b","1"]],["99",["c","3"]],["99",["d","1"]],["9",["c","30"]]]
我正在寻找最好的方法
[{"99"=>{"b"=>"1", "c"=>"3", "d"=>"1"}},{"9"=>{"c"=>"30"}]
解决方案
a = [["9",["b","8"]],["9",["c","2"]],["9",["d","6"]]]
a.group_by(&:first).transform_values{|a| a.map(&:last).to_h}
# => {"9"=>{"b"=>"8", "c"=>"2", "d"=>"6"}}
a.group_by(&:first).transform_values{|a| a.map(&:last).to_h}.map{|k, v| {k => v}}
# => [{"9"=>{"b"=>"8", "c"=>"2", "d"=>"6"}}]
推荐阅读
- sql - Getting an element and the next from a table
- r - 使用数量变量和几个 ID 变量有效地重塑长到宽
- c++ - 如何从标准输入读取具有 K 行输入和每行 N 个元素的 C++ 文件的输入
- excel - 从同一范围添加行,无论范围位置何时
- c - 警告未使用的结果
- azure - Azure 存储队列触发功能多次启动
- python - 如何设置 OPENCV_ENABLE_NONFREE 选项?
- excel - 在 Excel 中使用 VBA 在 Microsoft Word 中移动图像
- java - 多线程请求是否在 Spring 中共享相同的单例 bean?
- ios - 两个目标共享一个 Launch Storyboard,一个背景图像有效,另一个无效