在Ruby中给出这个数组:
myarray = [name: "John", age: 35]
我如何参考年龄?
我尝试myarray[:age]
但收到错误can't convert Symbol into Integer
更新
我试图通过提取我认为我的问题是什么来简化我的问题。我可能完全不理解。
我正在试验Dashing并试图将数字发送到计量器小部件。我创建了一个变量' response_raw'我正试图在第三次发送活动中发送它。这是我的代码:
SCHEDULER.every '1m', :first_in => 0 do
# Get checks
url = "https://#{CGI::escape user}:#{CGI::escape password}@api.pingdom.com/api/2.0/checks"
`enter code here`response = RestClient.get(url, {"App-Key" => api_key})
response = JSON.parse(response.body, :symbolize_names => true)
if response[:checks]
checks = response[:checks].map { |check|
if check[:status] == 'up'
state = 'up'
last_response_time = "#{check[:lastresponsetime]}ms"
response_raw = check[:lastresponsetime]
else
state = 'down'
last_response_time = "DOWN"
response_raw = 0
end
{ name: check[:name], state: state, lastRepsonseTime: last_response_time, pt: response_raw }
}
else
checks = [name: "pingdom", state: "down", lastRepsonseTime: "-", pt: 0]
end
checks.sort_by { |check| check['name'] }
send_event('pingdom', { checks: checks })
send_event('pingdom-meter', { value: checks[:pt] })
end
答案 0 :(得分:1)
在CoffeeScript中[name: "John", age: 35]
是一个包含单个对象的数组,该对象具有两个属性(name
和age
)。
以下是纯JavaScript的外观:
myarray = [
{
name: "John",
age: 35
}
];
因此,回答您的问题,要访问age
,您应该获取数组的第一个元素,然后引用age
属性:
myarray[0].age
或
myarray[0]['age']
但是,从您的问题来看,您可能使用了错误的数据结构。为什么不想使用普通对象而不是数组?
person = name: "John", age: 35
console.log "#{person.name}'s age is #{person.age}"
看起来您的问题实际上是关于Ruby而不是关于CoffeeScript。虽然,我的答案将保持不变。
要访问age
,您应该获取数组的第一个元素,然后引用age
属性:
myarray[0][:age]
由于myarray
是一个数组,因此Ruby需要一个整数索引,但你要给它一个符号:age
。
答案 1 :(得分:0)
我终于在列昂尼德的帮助下弄明白了。谢谢。
我改变了:
send_event('pingdom-meter', { value: checks[:pt] })
到
send_event('pingdom-meter', { value: checks[0][:pt] })