Сортировка файлов с помощью перетаскивания по имени в JavaScript

Я хочу отсортировать файлы по их имени, а затем обработать следующий код. Вот названия файлов, которые я загружаю: DSC08703-3.jpg, DSC08701-2.jpg, DSC08704-4.jpg

Один трюк, о котором я упоминал ниже.

$('#file').change(function () {
        var pic1 = "";
        var count=1;
        var Allowedimages=0;
        var uploadedcount=0;    
        filesup = event.target.files;
        if (this.files.length > 0) {
            haveToUpload=this.files.length;
            $.each(filenames, function (i, v) {
                var reader = new FileReader();
                remainToUpload = parseInt(haveToUpload)-parseInt(i);
                var proceedImg = remainToUpload;
                reader.onload = function (e) {
                    var img = new Image();
                    img.src = e.target.result;
                    img.onload = function () {
                    var canvas = document.createElement("canvas");
                    var value = 100;
                    var newsize=0;                    

                        var ctx = canvas.getContext("2d");
                        ctx.clearRect(0, 0, canvas.width, canvas.height);
                        canvas.width = img.width;
                        canvas.height = img.height;
                        ctx.drawImage(img, 0, 0, img.width, img.height);
                        var pic1=canvas.toDataURL("image/jpeg",0.80);
                        var x=1;
                        
                        while (x <= 60) {
                            var filebd=$('#fileBD'+x).val();
                            if (filebd==NoImageSrc) {
                               break;
                            }
                            x++;
                        }
                        
                        $('#ima'+x).attr('src', BASEURL+'/images/bx_loader.gif');                            
                        $('#fileBD'+(x)).val(pic1); 
                        var imagesize=$('#oldimagesvalue').val();
                        $('#oldimagesvalue').val(parseInt(imagesize)+1);
                    }
                };
                reader.readAsDataURL(this);
            });
        }
    });

Я пробовал решение ниже, но не работал.

var filenames = [];
filenames.push(this.files);
filenames.sort();
for(var i=0; i<filenames.length; i++){
for(var j=0; j<filenames[i].length; j++){
     //REST CODE HERE
 }
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
168
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Во-первых, дважды проверьте, что this.files не является массивом файловых интерфейсов. (https://developer.mozilla.org/en-US/docs/Web/API/File)

Если это так, вы должны сопоставить имена файлов следующим образом:

var filenames = this.files.map(x => x.name);

Что касается сортировки массива строк:

var ascending = (a, b) => a > b ? 1 : -1;
filenames.sort(ascending);
// console.info(filenames);
Ответ принят как подходящий

Извлеките число из имени изображения и используйте число в качестве значения поля.

$.each(this.files, function (i, v) {
 var tno = 0;
 var parts = v.name.split("-");
 var result = parts[parts.length - 1];
 var tno = result.toString().split(".")[0];
    var x=1;//parseInt(count)+parseInt(i)+parseInt(1);
    var xx = 1;
    if (tno>0)  x = tno;
    else x = xx;

    x++;
    xx++;
]);

Другие вопросы по теме