如何在数组中添加特定的哈希属性

时间:2012-10-14 20:38:01

标签: ruby arrays hash addition inject

我想从散列数组中添加特定属性...这是一个示例数组:

@horses = [
        {name: "Runner1", odds: 4.00},
        {name: "Runner2", odds: 20.00},
        {name: "Runner3", odds: 4.00}
        ]

我正在尝试这种方法:

@total_odds = horses[:odds].inject(:+)

但我收到了一个错误:[ ]': can't convert Symbol into Integer

我做错了什么?非常感谢(刚刚开始学习)

2 个答案:

答案 0 :(得分:2)

@horses.collect {|h| h[:odds] }.inject(:+)

答案 1 :(得分:1)

如果需要解压缩迭代的元素,可以使用inject的块:

@horses.inject(0) { |m, h| m + h[:odds] }

当你这样说时:

@total_odds = horses[:odds].inject(:+)

您尝试使用符号:odds作为数组的索引;数组索引是整数,并且数组无法将符号转换为整数,因此会出现can't convert Symbol into Integer错误。