配列の配列から特定の行を削除したいと思います。データは次のようになります。Ruby:配列の配列から削除
[
["Name1", "Email1", "Type1"],
["Name1", "Email1", "Type2"],
["Name1", "Email1", "Type3"],
["Name2", "Email2", "Type3"],
["Name2", "Email2", "Type4"]
]
"Type1"または "Type2"の場合、残りのすべての行は同じユーザー名で削除する必要があります。タイプが、例えば、 "Type1"または "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またはもっとエレガントな方法がありますか?
行は何ですか?行とは何ですか? '型'とは何ですか? 'username'とは何ですか? – sawa
申し訳ありませんが、私はあなたの質問を理解していません。行と行の間に違いはありますか?これはどういうわけか私が尋ねた質問に属していますか?同じことが型とユーザー名にも当てはまります。 とにかく、答えは非常に簡単だった: 'inputrow [0] == inputfile_content [(インデックス+ 1)] [0] inputfile_content.delete_at(インデックス+ 1) end' – thbe
「差とがありますが行と行 " - それは私があなたに求めている質問の一部です。残りは同じことが言えます。 – sawa