当前位置:  开发笔记 > 编程语言 > 正文

将第一行作为下一行哈希的键?

如何解决《将第一行作为下一行哈希的键?》经验,为你挑选了1个好方法。

我很难弄清楚如何使用第一行中的键使下一行成为哈希.

我有一个像这样结构的数组:

[["id", "name", "address"], [1, "James", "...."], [2, "John", "...."] ]

成为:

[{ id : 1, name: "James", address: "..."}, ...]

我使用了一个gem"simple_xlsx_reader",我只提取出第一张.

wb.sheets.first.row

从上面得到一个类似的数组输出.

谢谢!



1> Cary Swovela..:
arr = [["id", "name"], [1, "Jack"], [2, "Jill"]]

[arr.first].product(arr.drop 1).map { |a| a.transpose.to_h }
  #=> [{"id"=>1, "name"=>"Jack"}, {"id"=>2, "name"=>"Jill"}]

步骤:

b = [arr.first]
  #=> [["id", "name"]] 
c = arr.drop 1
  #=> [[1, "Jack"], [2, "Jill"]] 
d = b.product(c)
  #=> [[["id", "name"], [1, "Jack"]], [["id", "name"], [2, "Jill"]]] 
d.map { |a| a.transpose.to_h }
  #=> [{"id"=>1, "name"=>"Jack"}, {"id"=>2, "name"=>"Jill"}] 

d传递给map块的第一个元素是:

a = d.first
  [["id", "name"], [1, "Jack"]]

因此块计算是:

e = a.transpose
  #=> [["id", 1], ["name", "Jack"]] 
e.to_h
  #=> {"id"=>1, "name"=>"Jack"} 

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有