Ruby:从数组数组中删除

时间:2017-10-02 14:44:47

标签: arrays ruby

我想从数组数组中删除特定的行。数据如下所示:

[
  ["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还是有更优雅的方式?

1 个答案:

答案 0 :(得分:-1)

使用循环解决而不是单个删除:

while inputrow[0] == inputfile_content[(index + 1)][0]
  inputfile_content.delete_at(index + 1)
end