javascriptのFileListから、指定要素を削除したいです

投稿者: Anonymous

現在は下記のような実装になっており、elseに入ったらその時点のfile[i]を削除したいのですが方法が分かりません。ご教授をお願いします。

var files = e.target.files || e.dataTransfer.files;

        for (var i = 0; i < files.length;i++){
            if (files[i].type == 'video/3gpp' || files[i].type == 'video/3gpp2' ||
            files[i].type == 'audio/vnd.dlna.adts' || files[i].type == 'video/avi' ||
            files[i].type == 'video/vnd.dlna.mpeg-tts' || files[i].type == 'audio/x-m4a' ||
            files[i].type == 'audio/x-m4b' || files[i].type == 'audio/x-m4p' ||
            files[i].type == 'video/quicktime' || files[i].type == 'video/mp4' ||
            files[i].type == 'audio/wav' || files[i].type == 'video/x-matroska' ||
            files[i].type == 'audio/x-matroska' || files[i].type == 'audio/mp3') {
                alert(files[i].type + 'ファイルが選択されました');
            }
            else {
                alert(files[i].type + '不正なファイル形式です');
               }
        }

解決

結果を保存する配列を用意して、そこに必要な物だけ保存するのはどうでしょうか?
説明のためにファイルの配列ではなく単なる文字列の配列で書いてみました。
また条件判断もスッキリ書けるように書きなおしました。

files = ['video/3gpp', 'audio/x-m4b', 'other'];
accepted_file_types = [
    'video/3gpp','video/3gpp2','audio/vnd.dlna.adts', 'video/avi', 'audio/x-m4b'
];
filtered_files = [];
for (var i = 0; i < files.length; i++){
    if(accepted_file_types.indexOf(files[i]) >= 0){
        filtered_files.push(files[i]);
    }
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *