【发布时间】:2017-08-05 11:08:55
【问题描述】:
如果我有一个看起来像这样的哈希数组
array = [{
name: 'Stan',
surname: 'Smith',
address: {
street: 'Some street',
postcode: '98877',
#...
}
}, {
#...
}]
您能否编写一个函数来获取数组中的特定项,对其进行迭代并动态检索随后的嵌套数据?
这个例子不起作用,但希望能更好地解释我的问题:
def getDataFromFirstItem(someVal)
array(0).each{ |k, v| v["#{ someVal }"] }
end
puts getDataFromFirstItem('name')
# Expected output: 'Stan'
对于上下文,我正在尝试创建一个中间人助手,这样我每次在模板中使用它时就不必遍历一个只有一个项目的特定数组。该项目(哈希)包含大量全局站点变量。数据来自 Contentful,其中所有内容都是条目数组。
【问题讨论】:
-
我不确定我是否理解您的问题。您能否给出预期输出的完整示例?
-
感谢您的回复...我已经添加了预期的输出。这有帮助吗?如果您需要更多信息,请告诉我。
-
那么
array[0][:name]做你想做的事吗? -
正如@pascalbetz 建议的那样。如果您将密钥作为字符串传递,您可能想做
def getDataFromFirstItem(someVal); array.first[someVal.to_sym];end -
谢谢。是的,这确实适用于这个例子,但它似乎不适用于中间人的数据,它包含一些“增强”哈希值 (
#<Middleman::Util::EnhancedHash item_one=...),这不允许我这样做......无论如何,这显然超出了我的范围和原始问题的范围,所以如果你回答,我会标记你的正确。