ruby - 遍历散列的散列将元素转换为数组
问题描述
我正在处理来自 GitHub 的 Webhook 响应。响应包含一个web_hook_response
看起来像这样的哈希
{:commits=>
{:modified=>
["public/en/landing_pages/dc.json",
"draft/en/landing_pages/careers/ac123.json"]
}
}
现在我有一个处理这个哈希的函数。
modified_or_deleted_files = []
web_hook_response[:commits].map do |commit|
modified_or_deleted_files << commit[:removed] << commit[:modified]
end
我收到这个错误
TypeError: no implicit conversion of Symbol into Integer
我试图找出commit
它何时在地图块内的值,这就是打印出来的
[:modified,
["public/en/landing_pages/dc.json",
"draft/en/landing_pages/careers/ac123.json"]]
为什么modified
哈希转换为符号数组和地图块内的数组?我无法解释为什么会这样。谁能解释为什么会这样?
解决方案
web_hook_response[:commits]
是一个散列,而不是一个数组,所以当你调用map
它时,block 参数commit
会得到键值对,它们是大小为 2 的数组。
我认为您需要的是连接 2 个数组。你可以
modified_or_deleted_files = web_hook_response[:commits].slice(:modified, :removed).values.flatten
推荐阅读
- apache-flink - 为什么我的 Flink SQL 查询有非常不同的检查点大小?
- karate - 如何发送动态多部分数据请求
- php - Android WebView APP + Laravel “页面因不活动而过期”
- optaplanner - 是否可以将参数传递给 MoveIteratorFactory
- x-frame-options - 如果不使用 www,则 X-Frame-Options ALLOW-FROM 不起作用
- python - Pandas Dataframes 上的切片 [:] 行为不一致
- angular - mat-sidenav 最初打开时隐藏内容
- node.js - 从应用程序 nodejs 收到的不完整响应
- ios - Whatsapp 打开 url 代码在 ios 中打开 Boltt Health App 而不是 whatsapp
- java - 无法创建具有动态值的条件查询