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

问题描述 投票:1回答:2

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

@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

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

ruby arrays hash addition inject
2个回答
2
投票
@horses.collect {|h| h[:odds] }.inject(:+)

1
投票

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

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

当你这样说:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.