Есть ли более эффективный способ сделать это? Есть ли в JavaScript какие-нибудь встроенные функции для этого? Мой метод работает со сложностью O(n), и мне было бы интересно узнать о лучших реализациях.
Честно, зачем такой сложный цикл? Да, unshift() работает, но можно просто originalArray = [responseFromServer].concat(originalArray). Делает то же что спред, но поддержка лучше. По производительности разницы почти нет, если массив не гигантский. Твой вариант с delete и циклом только запутывает - код должен быть понятным.
Кроме unshift() попробуй спред-оператор: originalArray = [responseFromServer, ...originalArray]. Да, создается новый массив, но читается лучше. По производительности одинаково - O(n), элементы все равно сдвигаются. Если часто добавляешь в начало, лучше другую структуру данных использовать.
Просто unshift() используй - originalArray.unshift(responseFromServer) добавит в начало. Да, тоже O(n), но код чище. А зачем тебе это вообще? Может по-другому можно решить?