我有一个带有哈希的JSON文件,看起来像这样
{
"1": {
"organisation": "Example1",
"name": "Name1",
"items": [
{
"name": "Name1",
"html_url": "URL1",
"results": [
"items go here"
]
},
{
"name": "Name2",
"html_url": "URL2",
"results": [
"Items go here"
]
},
我想删除html_url与存储在文本文件中的列表匹配的元素,我一直在玩弄删除 - 如果是这样的话。
@org.each do |key,value|
File.open('views/investigated.txt').each do |line|
value['items'].delete_if { |h| h['html_url'] == line }
end
end
但它似乎没有改变阵列,我完全迷失了,任何帮助都会非常感激
答案 0 :(得分:1)
@Stefan是对的,最好用你想从数组中删除的行创建一个单独的数组:
urls_to_delete = []
File.open('views/investigated.txt').each do |line|
urls_to_delete.push(line)
end
然后使用该数组从哈希中删除行:
@org.each do |key,value|
value['items'].delete_if { |h| urls_to_delete.include?(h['html_url']) }
end
使用您的示例对其进行测试,并完全按照您要实现的目标进行测试。
答案 1 :(得分:0)
也许你可以在˙@org˙上使用each_key
删除一次迭代中的记录,而你不需要新的数组。
像这样:
@org.each_key do |key|
File.open('views/investigated.txt').each do |line|
line.chomp!
@org[key]['items'].delete_if { |h| h['html_url'] == line }
end
end