Показать сообщение отдельно
  #6 (permalink)  
Старый 13.01.2023, 21:00
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от Bonky
какое из решений является более экономным по ресурсам?
Оба решения так себе, работают за O(n^2). То которое из учебника, лучше переписать как Rise советовал. Твой вариант можно ускорить, если не пользоваться сплайсом:
function unique(arr) {
    arr.sort();
    let p = 0;

    for (let i = 1; i < arr.length; ++i) {
        if (arr[i] !== arr[p]) {
            p++;
            arr[p] = arr[i];
        }
    }

    arr.length = p + 1;
}


Это на случай, когда надо именно пофильтровать переданный массив, а не создать новый. Но такое редко бывает.
Ответить с цитированием