如何在哈希中移动数组元素?

时间:2013-07-29 22:48:39

标签: ruby

我正在尝试将数组放入哈希:

@friends = {}
@friend = ['network' => 'facebook', 'picture' => picture, 'name' => name, 'id' => id]

如何将@friend移至@friends以获得如下结果:

friends: {
  [
    'network': 'facebook',
    'picture': 'http://fb.com/myimage.jpg',
    'name':    'MyName',
    'id':      '46846546'
  ]
}

array array我可以做到。 hash中的array我也可以。但是array中的hash - 我找不到怎么做。

这可能是不可能的。我在文档中搜索哈希和数组,但没有任何相关内容。

@dave newton的

与上次评论相关:

enter image description here

@Borodin与他的回答有关:

enter image description here

2 个答案:

答案 0 :(得分:1)

你不能把数组放入哈希"获得像{[]}这样的东西。哈希是根据键值对构建的。数组可以在散列中获取键或值角色。

例如,这里的数组是值,符号:friends是键:

{:friends => ['Pete', 'Robert', 'Katrin']}

@friend变量(如你所定义的那样)导致一个数组有一个元素,这是一个散列。

@friend = ['network' => 'facebook', 'picture' => picture, 'name' => 'name', 'id' => 42]
#=> [{"network"=>"facebook", "picture"=>"picture", "name"=>"name", "id"=>42}]

我想你希望@friend成为哈希值,而@friends是一个包含许多friend哈希值的数组。

答案 1 :(得分:1)

该规范是无稽之谈。它有带键的数组和没有键的哈希。应交换{}[]对,并且键/值对之间应该有逗号。

我认为它看起来像这样

{
  "connections" : [
    {
      "network" : "facebook",
      "picture" : "http://facebook.com/picture.jpg",
      "name" : "User Name",
      "id" : "12345679"
    },
    {
      "network" : "linkedin",
      "picture" : "http://linkedin.com/picture.jpg",
      "name" : "Another User",
      "id" : "959d919sd92"
    }
  ]
}

但我不能确定,你需要回去问问题。