我有一个带有*.js和*.tc扩展的FileList。我如何将它拆分为两个FileList数组,一个只包含*.js文件,另一个包含*.tc文件?
发布于 2017-11-16 12:30:24
您可以使用File.extname获取文件名的扩展名,使用Array#group_by对具有相似性的数组成员进行分组:
result = [ "aaa.js", "bbb.js", "ccc.js",
"xxx.tc", "yyy.tc", "zzz.tc" ].group_by { |fname| File.extname(fname) }
=> { ".js" => ["aaa.js", "bbb.js", "ccc.js"],
".tc" => ["xxx.tc", "yyy.tc", "zzz.tc"] }现在,您有了一个包含两个数组(result[".js"]和result[".tc"])的Hash,这两个数组根据文件扩展名包含文件名。
发布于 2017-11-16 14:31:51
Enumerable#partition出手相救。
["aaa.js", "bbb.js", "ccc.js",
"xxx.tc", "yyy.tc", "zzz.tc" ].partition do |e|
e[/(?<=\.).*\z/] == "tc"
end
#⇒ [["xxx.tc", "yyy.tc", "zzz.tc"],
# ["aaa.js", "bbb.js", "ccc.js"]]或者,更明确地说:
["aaa.js", "bbb.js", "ccc.js",
"xxx.tc", "yyy.tc", "zzz.tc" ].partition(&/\.tc\z/.method(:=~))https://stackoverflow.com/questions/47321268
复制相似问题