nekoguard
@nekoguard
котер

Отсортировать массив по возрастанию пропуская нули?

Дан массив чисел, например: [0, 7, 345, 20, 0, 0, 48, 185], нужно отсортировать элементы по возрастанию, оставив все нули на месте, т.е. получить: [0, 7, 20, 48, 0, 0, 185, 345]. Какие есть способы?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
function nonZeroSort(arr) {
    const nz = arr.filter(Boolean).sort((a, b) => a - b);
    let pos = 0;
    return arr.map((x, i) => x && nz[pos++]);
}


если надо отсортировать "на месте" (в исходном массиве), то вместо map использовать forEach или обычный цикл
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
14 июн. 2024, в 00:05
100 руб./за проект
13 июн. 2024, в 22:32
60000 руб./за проект
13 июн. 2024, в 22:27
45000 руб./за проект