在ruby中向数组添加元素

时间:2015-08-24 18:33:19

标签: ruby-on-rails arrays ruby haml

我收到以下对象

@list = 
 {
    "total": 2,
    "items": [
        {

            "name": "hello",
            "values": [
                {
                    "value": "100"
                }
            ]
        },
        {

            "name": "SOME NAME",
            "values": [
                {
                    "value": "120"
                }
            ]
        }
    ]
}

我想创建所有值的数组。像[100,120]这样的东西。我怎么做。 我试过了,

- list.items.each do |item, arr = [], name = []|
-arr.push(item.values); name.push(item.name)
  - y = arr
  - x = names

在这种情况下, 我一次只得到一个值。在第一次迭代中我有[100],在第二次迭代中我有[120]。我做错了什么。?

更新:我已经编辑了我想要做的事情。谢谢!

yx都应分别包含值和名称数组。

1 个答案:

答案 0 :(得分:0)

这里我们需要4件事:

  1. 从哈希中获取密钥:hash[:key]
  2. Array#map[1, 2, 3].map { |number| number**2 } # => [1, 4, 9]
  3. Array#flatten[[1, 2], [3, 4]].flatten # => [1, 2, 3, 4]
  4. String#to_i'44'.to_i # => 44
  5. @list[:items].map { |item| item[:values].map { |value| value[:value] } }.flatten.map(&:to_i)