我想从数组数组中删除特定的行。数据如下所示:
[
["Name1", "Email1", "Type1"],
["Name1", "Email1", "Type2"],
["Name1", "Email1", "Type3"],
["Name2", "Email2", "Type3"],
["Name2", "Email2", "Type4"]
]
如果类型是例如"类型1"或" Type2"然后应删除具有相同用户名的所有剩余行。如果类型不是例如"类型1"或" Type2",这些行应保留在数组中。这意味着,生成的数组应如下所示:
[
["Name1", "Email1", "Type1"],
["Name2", "Email2", "Type3"],
["Name2", "Email2", "Type4"]
]
在循环遍历数组之前,数组按用户名排序。我目前正在使用的编码就是这个:
inputfile_content.each.with_index do |inputrow, index|
if (index + 1) != inputfile_content.length
if inputrow[0] == inputfile_content[(index + 1)][0]
if ["Type1", "Type2"].include?(inputrow[2])
inputfile_content.delete_at(index + 1)
end
end
end
end
但显然它没有完全正常工作,它只删除数组中的下一个条目,但不会删除所有相同用户名。任何人都知道如何解决这个问题?嵌套的inputfile_content.each还是有更优雅的方式?
答案 0 :(得分:-1)
使用循环解决而不是单个删除:
while inputrow[0] == inputfile_content[(index + 1)][0]
inputfile_content.delete_at(index + 1)
end