nekoguard
@nekoguard
котер

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

Дан массив чисел, например: [0, 7, 345, 20, 0, 0, 48, 185], нужно отсортировать элементы по возрастанию, оставив все нули на месте, т.е. получить: [0, 7, 20, 48, 0, 0, 185, 345]. Какие есть способы?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 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 или обычный цикл
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы