Ваша проблема вызвана ограничением JavaScript.
Посмотрите на эту часть кода:
for(let i = 0; i < files.length; i++){
var reader = new FileReader();
reader.onloadend = function () {
images[i] = loadImage(reader.result);
}
reader.readAsDataURL(files[i]);
}
Поскольку вы используете ключевое слово * 1006, ваше reader
фактически находится в области действия .From MDN :
Область действия переменной, объявленной с помощью var, является ее текущим контекстом выполнения, который является либо включающей функцией, либо, для переменных, объявленных вне какой-либо функции, глобальным.Если вы повторно объявите переменную JavaScript, она не потеряет своего значения.
Именно поэтому ваша переменная reader
работает только для одного из ваших изображений.
Простейшее решение этой проблемы - использовать const
вместо var
здесь:
const reader = new FileReader();
Ключевое слово const
создает переменные в block scope , что, вероятно, соответствует ожиданиям var
делать в первую очередь.