Answer

Answer

t.me/js_test

Ответ:

function sortOdd(array) {
    const isOdd = (n) => n % 2 !== 0;

    const odd = array.filter(isOdd).sort((a, b) => a - b);

    return array.map((n) => (isOdd(n) ? odd.shift() : n));
}

Объяснение:

Создаём дополнительную функцию isOdd для проверки числа на нечетность. Затем создаём массив odd и с помощью метода filter вытаскиваем все нечетные элементы из переданного в функцию массива array а также сразу сортируем их с помощью метода sort. Далее с помощью метода map идем по массиву array и проверяем: если число нечетное то ставим на его место первый элемент из массива odd, одновременно обрезая этот самый массив odd, а если элемент четный то ничего не меняем.

Код для проверки:

function sortOdd(array) {
    const isOdd = (n) => n % 2 !== 0;

    const odd = array.filter(isOdd).sort((a, b) => a - b);

    return array.map((n) => (isOdd(n) ? odd.shift() : n));
}

console.log(sortOdd([5, 3, 2, 8, 1, 4]));
console.log(sortOdd([5, 3, 1, 8, 0]));
console.log(sortOdd([]));

Report Page