ничего что на boolean делится?
event.total = 0 поэтому весь прогресс примерный и вероятно на скорость загрузки ориентируется, а точнее на то что браузер решит.
lengthComputable = false
ты можешь использовать sqlite3, серверную базу данных, которая будет сразу давать нужный результат по ID.
Нет смысла тут очевидные вещи объяснять, коли оные пока не очевидны.:)
Хз что у них там на самом деле значат ops/sec.
В этом суть классов.
function getArticle(id) { ... }
function deleteArticle(id) { ... }
console.log(getArticle(1));
deleteArticle(1);при этом никак не влияя на уже рабочий код
очевидно - да
Ты для микрокотролера пишешь?
Просто иначе производительность unshift как и большинства иных операций - в пределах погрешности для миллионов записей перебираемых миллион раз в секунду.:)

В целом задача решается через класс: создаёшь класс, в нём методы которые делают именно нужные тебе операции, а уж реализацию внутри самих методов можешь писать любой замороченности(хранить копии в разной структуре, кэширование и т.д.) - тебе её надо написать только один раз, а дальше будешь пользоваться простыми и очевидными методами класса, абстрагировавшись от внутренней сложности.
Где id? Как они его получают, где хранится?


Имя сбойного приложения: SnippingTool.exe, версия: 11.2308.33.0, метка времени: 0x65026885
Имя сбойного модуля: KERNELBASE.dll, версия: 10.0.19041.1202, метка времени: 0xc9db1934
Код исключения: 0xc000027b
Смещение ошибки: 0x000000000010be3e
Идентификатор сбойного процесса: 0x9ac
Время запуска сбойного приложения: 0x01d9eb017d59871c
Путь сбойного приложения: C:\Users\adm\Documents\apx2\SnippingTool\SnippingTool.exe
Путь сбойного модуля: C:\Windows\System32\KERNELBASE.dll
Идентификатор отчета: c0cf10b1-22ef-4ed7-a9d5-673778e9b49c
Полное имя сбойного пакета: Microsoft.ScreenSketch_11.2308.35.0_x64__8wekyb3d8bbwe
Код приложения, связанного со сбойным пакетом: App Прога может использовать апихи, которых нет в Десятке