【问题标题】:Ruby rails how do i get values from an array within an array within an array?Ruby rails 如何从数组中的数组中的数组中获取值?
【发布时间】:2019-05-14 23:33:57
【问题描述】:

我想从可以分配给表列的 JSON 数组中获取值,但是我需要的值之一是在数组中的数组中,在数组中。例如,一个员工数组,每个员工都有一个部门数组,其中包含一个楼层数组。

{"employees": [{"name": "bob", "age": 20, "department": ["location": "head office", "floors":["ground", "basement"]], "grade": "supervisor"}]}

姓名和年龄按预期显示,但我不确定如何获得楼层。我尝试了几种方法,但我无法获得“地板”。这是我的最新尝试,但它在 @employee[:department] 行上显示字符串到整数的无效转换。有人可以建议获得此价值的最佳方法吗?谢谢

@employees.each do |i|
 employee[:column1] = i[:name]
 employee[:column2] = i[:age]

 @employee[:department].each do |d|
  employee[:column3] = d[:floors]
 end
end

【问题讨论】:

  • 不应该是i.[:department].each do |d|吗?
  • 太好了,谢谢!

标签: ruby-on-rails arrays json ruby


【解决方案1】:

问题是当我认为你想迭代 i[:department] 时,你正在迭代 @employee[:department]

你可以的

 @employees.values.flatten.each do |i|
     employee[:column1] = i[:name]
     employee[:column2] = i[:age]

     i[:department].each do |d|
         employee[:column3] = d[:floors]
     end
 end 

【讨论】:

    【解决方案2】:

    你可以试试这个:

    @employees.each do |e|
      employee[:column1] = e[:name]
      employee[:column2] = e[:age]
      employee[:column3] = e[:department].last[:floors]
    end
    

    没有必要迭代,因为employee[:column3] = d[:floors] 总是以数组的最后一个元素结束。所以,你可以继续使用last

    为您节省几行代码和一些输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多