仅在一个数组中获取对象,而不是在数组中获取多个数组

时间:2017-11-06 20:43:51

标签: ruby-on-rails arrays json ruby object

对于糟糕的英文标题感到抱歉,但下面的代码更有意义。 我用.each从数据中获取了我想要的一些键和值,但是当我这样做时,我得到了这个结果。

[
  [
    {
        id: 1,
        name: "Immad",
        age: 18
    }
  ],
  [
    {
        id: 2,
        name: "Vicky",
        age: 21
    }
  ],
  [
    {
        id: 3,
        name: "Adam",
        age: 24
    }
  ]
]

我想将对象映射到我希望它的某些js库:

[
    {
        id: 1,
        name: "Immad",
        age: 18
    },
    {
        id: 2,
        name: "Vicky",
        age: 21
    },
    {
        id: 3,
        name: "Adam",
        age: 24
    }
]

任何人都可以至少给我提示我应该使用什么来使用ruby来做到这一点。提前谢谢。

3 个答案:

答案 0 :(得分:2)

已有Array方法。

foo_array.flatten!

或非破坏性(仅返回值foo_array保持不变)

foor_array.flatten

答案 1 :(得分:1)

简单,你应该这样做

Test = [[{:id=>1, :name=>"Immad", :age=>18}], [{:id=>2, :name=>"Vicky", :age=>21}], [{:id=>3, :name=>"Adam", :age=>24}]]

在此处使用.flatten

Test.flatten
    => [{:id=>1, :name=>"Immad", :age=>18}, {:id=>2, :name=>"Vicky", :age=>21}, {:id=>3, :name=>"Adam", :age=>24}]

答案 2 :(得分:0)

使用.map!

foo = [
  [
    {
        id: 1,
        name: "Immad",
        age: 18
    }
  ],
  [
    {
        id: 2,
        name: "Vicky",
        age: 21
    }
  ],
  [
    {
        id: 3,
        name: "Adam",
        age: 24
    }
  ]
]

# Call .map! on the array
foo.map! { |array| array.first }
=> [
    [0] {
          :id => 1,
        :name => "Immad",
         :age => 18
    },
    [1] {
          :id => 2,
        :name => "Vicky",
         :age => 21
    },
    [2] {
          :id => 3,
        :name => "Adam",
         :age => 24
    }
]